home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / share / i2p / history.txt < prev    next >
Encoding:
Text File  |  2012-10-27  |  458.1 KB  |  11,476 lines

  1. * 2012-10-27 0.9.3 released
  2.  
  3. 2012-10-25 zzz
  4.  * BuildHandler: Fix "too slow" rejections due to internal clock skew
  5.  
  6. 2012-10-24 zzz
  7.  * I2PSnark:
  8.    - Fix several partial piece (temp file) leaks
  9.    - Don't lose all DHT peers if we stop quickly    
  10.    - Explore a kbucket if it's less than 3/4 full
  11.  
  12. 2012-10-24 str4d
  13.  * i2ptunnel: Truncate long client destinations (ticket #581)
  14.  
  15. 2012-10-21 zzz
  16.  * Watchdog: Don't dump threads too often (ticket #519)
  17.  
  18. 2012-10-20 zzz
  19.  * Transport: Back out CoDel for SSU PeerState and NTCP
  20.  
  21. 2012-10-19 zzz
  22.  * UDP: Fix peer test NPE (ticket # 748)
  23.  
  24. 2012-10-18 kytv
  25. * Portuguese and Spanish updates from Transifex
  26.  * Update geoip.txt based on Maxmind GeoLite Country database from 2012-10-02
  27.  
  28. 2012-10-15 kytv
  29. * Italian and Swedish updates from Transifex
  30.  
  31. 2012-10-14 zzz
  32.  * Console: Use non-nio connector for Java 5 and JamVM/gij
  33.             (tickets #715 and #743)
  34.  * i2psnark: Fix request tracking bug preventing piece requests
  35.  
  36. 2012-10-11 kytv
  37. * Italian translation updates from Transifex
  38. * i2prouter:
  39.   - Support for installing as a daemon with systemd on Arch Linux and Suse
  40.   - Support installing as a daemon on Slackware
  41.  
  42. 2012-10-10 zzz
  43.  * ShellCommand: Fix launching all browsers at startup (ticket #453)
  44.  * stats.jsp: Sort groups by translated name
  45.  
  46. 2012-10-09 zzz
  47.  * Console, i2ptunnel: Warn on low ports
  48.  * EventLog: Add more events
  49.  * NetDB: Increase floodfills again
  50.  * RouterInfo: Exit 1 on error in main()
  51.  * SSU:
  52.    - Add peer test throttling
  53.    - Peer test packet count fixes
  54.    - Adjust peer test timeouts and add backoff
  55.    - Reject relays and peer tests from same /16
  56.    - More peer test cleanup and log tweaks
  57.  * Transports:
  58.    - Enforce minimum peer port
  59.    - Warn on low router ports
  60.  
  61. 2012-10-08 zzz
  62.  * SSU:
  63.    - Fix relay request handling bug from -10
  64.    - Fix peer test reply handling bug from -10
  65.    - Fix NPE from -6
  66.  
  67. 2012-10-07 zzz
  68.  * I2PAppContext: Improved synching in constructor
  69.  * i2ptunnel:
  70.    - Set default read timeout in standard server
  71.    - Reduce header timeout, enforce total header timeout
  72.      in IRC and HTTP servers (ticket #723)
  73.  * Logs:
  74.    - Flush buffers in logs.jsp
  75.    - Add dup message to buffers, was in file only
  76.  * Streaming: Don't ignore option or force connect timeout to 5 minutes
  77.  * UPnP: Workaround NPE (ticket #728)
  78.  
  79. 2012-10-06 zzz
  80.  * configlogging.jsp: Fix IAE
  81.  * error500.jsp: Fix whitespace
  82.  * i2psnark:
  83.    - Add allocating and checking indications
  84.    - Add bandwidth message at startup
  85.    - More checks at torrent creation
  86.  * SSU:
  87.    - Throttle outbound destroys on shutdown
  88.    - Limit outbound introduction offers
  89.    - Validate port/IP in received peer tests
  90.  
  91. 2012-10-05 zzz
  92.  * configservice.jsp: Add GC button
  93.  * DataHelper: Sanity checks in storeProps(), use
  94.                storeProps() for router config again
  95.  * SSU:
  96.    - More synchronization fixes
  97.    - Reduce chance of dup acks in a single message
  98.    - Reduce max unsent acks to 50
  99.    - Use last ack time in ping decision too
  100.    - Reduce ack delay
  101.  * TunnelPoolManager: Fix early NPE (ticket #724)
  102.  
  103. 2012-10-03 zzz
  104.  * NTCP: Reduce conLock contention
  105.  * SSU:
  106.    - Increase max outbound establishments based on bandwidth
  107.    - Synchronization fix for Java 5
  108.    - Use multiple buffer sizes in OutboundMessageState to
  109.      reduce memory usage
  110.    - Adjust skew calculation, synchronize too
  111.    - Ping loop improvements
  112.  
  113. 2012-10-02 zzz
  114.  * I2CP: Delay after sending disconnect message to
  115.          help it get through
  116.  * i2psnark: Fix delete download message
  117.  * i2ptunnel: Fix log message
  118.  * NTCP: Only set keepalive if firewalled
  119.  * OOMListener: Dump threads on OOM
  120.  * PRNG, LogWriter: Use I2PThread to catch OOM
  121.  * SimpleByteCache: Fix ABQ/LBQ selection
  122.  * SSU:
  123.    - Fix memory leak in _peersByRemoteHost map caused by not
  124.      removing peers that change IP or port
  125.    - Send keepalives if firewalled
  126.    - Handle peers that change ports on an established session
  127.    - Synchronize adds and drops
  128.    - Don't use peers with high RTTs in clock skew calculation
  129.    - Reduce initial RTT/RTO
  130.  
  131. 2012-09-28 zzz
  132.  * i2psnark:
  133.    - Fix bugs in rarest-first tracking
  134.    - Fix requesting of partial piece when there are multiple seeds
  135.    - Synch fix in BitField
  136.  * i2ptunnel: Fix wrong server IP in log message
  137.  * peers.jsp: Remove SSU "Dev" column
  138.  * SessionKeyManager: Store original tagset size for debugging
  139.  * Streaming: Don't send RST on globally-blackisted conns
  140.  
  141. 2012-09-26 zzz
  142.  * Addresses: Reject numeric IPs of the form n, n.n, and n.n.n
  143.  * Console, i2ptunnel: More validation of address and port in forms
  144.  * ConvertToHash:
  145.    - Add support for b64hash.i2p
  146.    - Cleanup and use cache
  147.  * i2psnark: Enable DHT by default
  148.  * RFC822Date: Synchronization fix
  149.  * Streaming:
  150.    - Implement changing connection limits on a running session
  151.    - Implement global blacklist
  152.  
  153. 2012-09-25 zzz
  154.  * Context: Make files final
  155.  * EventLog: Fix IAE on portable
  156.  * Jetty: Add non-NIO selector option (ticket #715)
  157.  * OutboundEstablishState: Cleanup (ticket #671)
  158.  * SimpleByteCache: Concurrent fix
  159.  * UPnP: Cleanup & final
  160.  * URLLauncher: Add xdg-open (ticket #717)
  161.  
  162. 2012-09-21 zzz
  163.  * BuildHandler: Use CoDel for inbound queue
  164.  * ByteCache:
  165.    - Prevent release of wrong size
  166.    - Move all 16/32 byte users to SimpleByteCache
  167.    - Increase SimpleByteCache default size.
  168.  * ClientConnectionRunner:
  169.    - Run HandleJob and MessageReceivedJob inline for speed
  170.    - Remove payload from message map if availability announce fails
  171.    - Cleanups
  172.  * ClientManager:
  173.    - Concurrent client map for faster lookup
  174.    - Add by-hash client map for faster lookup by hash
  175.  * ClientWriterRunner: Limit queue size
  176.  * Clock: Synchronization, log large shifts to event log
  177.  * Console: Mark all restarts on graphs using the event log.
  178.  * FortunaRandomSource:
  179.    - Fix bug that wasted entropy in nextInt()
  180.    - Improved synchronization
  181.  * GarlicMessage:
  182.    - Add notes about GarlicMessageHandler and HandleGarlicMessageJob
  183.      being unused in practice
  184.  * I2CP:
  185.    - Limit router/client queue sizes and queue wait times
  186.    - Buffer output streams
  187.  * i2psnark:
  188.    - Implement blacklist for unreachable DHT peers
  189.    - Reduce threshold for unreachable
  190.    - Use ByteCache for chunks in/out
  191.  * IP Lookup:
  192.    - Add caching in RouterAddress with secondary caching
  193.      in Addresses; use caches to speed up transport bids,
  194.      blocklist checks, geoip lookups, and profile organizer
  195.      checks (ticket #707)
  196.    - Limit IP cache size in TransportImpl
  197.    - Clear caches at shutdown
  198.  * JobQueue: Reduce lock contention
  199.  * LHMCache: New util, replacing several private versions
  200.  * LogWriter:
  201.    -  Duplicate log message removal
  202.    -  Increase buffer time
  203.  * NTCP: Move NTCPConnection outbound queue to CoDelPriority
  204.  * OutNetMessage:
  205.    - Centralize priority definitions
  206.    - Raise netdb store and reply priority
  207.  * Router:
  208.    - Boost priority of shutdown thread
  209.    - Replace ident log with new, general-purpose event log;
  210.      use for stops, starts, and updates, and others.
  211.    - New AQM CoDel queue utilities
  212.    - Startup/shutdown synchronization fixes
  213.  * RouterAddress: Remove unused expiration field to save space
  214.  * SimpleTimer (ticket #653):
  215.    - Move all remaining uses to SimpleTimer2
  216.    - Deprecate
  217.  * SSU:
  218.    - Move MessageReceiver, UDPSender and UDPReceiver queues to CoDel
  219.    - Separate PeerState outbound message list into a queue for unsent messages
  220.      and a list for sent messages awaiting ack
  221.    - Implement PeerState outbound queue as CoDelPriority
  222.    - Implement backlogged indication like in NTCP
  223.    - Increase initial and max RTO
  224.    - Don't count ack-only packets in bandwidth allocation
  225.  * Streaming: Don't send a RST to an hour/day limited peer,
  226.    or blacklisted, or non-whitelisted, to not waste outbound bandwidth
  227.  * SystemVersion: New util, to consolidate duplicate code,
  228.    and determine Java version on Android
  229.  * TunnelGateway:
  230.    - Refactor TunnelGateway.Pending to its own file PendingGatewayMesasge
  231.    - Move OBGW queue to CoDelPriority
  232.    - Move IBGW queue to CoDel
  233.    - Limit queue sizes
  234.    - Add stat for overflow
  235.    - Remove some stats
  236.    - Change pumper to LinkedHashSet for efficiency
  237.      (like NTCP Reader/Writer)
  238.    - Limit messages pumped per cycle to increase
  239.      round-robin fairness
  240.    - Implement pushback from a backlogged transport
  241.      queue to the pre-fragmentation queue
  242.    - Comment out some unused code
  243.  
  244. * 2012-09-21 0.9.2 released
  245.  
  246. 2012-09-15 zzz
  247.  * Build: Fix unpack problem on Java 5: http://forum.i2p/viewtopic.php?t=7334
  248.  
  249. 2012-09-14 zzz
  250.  * SSU: Fix shutdown NPE (ticket #709)
  251.  
  252. 2012-09-13 kytv
  253.  * Update geoip.txt based on Maxmind GeoLite Country database from 2012-09-05
  254.  
  255. 2012-09-12 kytv
  256.  * Czech translation updates from Transifex
  257.  
  258. 2012-09-10 meeh
  259.  * Added fix for startup issues on newer versions of launchd (osx startup scripts)
  260.  
  261. 2012-09-05 meeh
  262.  * Added startup scripts for osx
  263.  
  264. 2012-09-04 zzz
  265.  * I2PTunnelServer: Clean shutdown after session exception
  266.  * OutNetMessage: Speedup after profiling (ticket #707 - thx dg, kytv, zab)
  267.  * SSU: Fix some issues with queueing outbound establishments
  268.  
  269. 2012-08-31 zzz
  270.  * i2psnark: Remove * from magnet and download names
  271.  * Router: Lengthen shutdown spinner life
  272.  * Startup: Don't complain about clients.config missing on Android
  273.  
  274. 2012-08-29 zzz
  275.  * ClientManager: Cleanups
  276.  * i2psnark:
  277.    - Fix NPE on destroy() if init() failed
  278.    - Add new flood-resistant KBucket trim policy
  279.    - Limit received MsgID size
  280.  * NTCP: Reduce lock contention (ticket #697)
  281.  * RandomIterator: Workaround for Android bug (ticket #703)
  282.  
  283. 2012-08-27 zzz
  284.  * i2psnark:
  285.    - Notify threads awaiting DHT replies at shutdown
  286.    - Fix cases where we weren't using the session for b32 lookup
  287.  * Reseed: Remove forum.i2p2.de
  288.  * Streaming: Limit amount of slow-start exponential growth
  289.  * SSU:
  290.    - Limit UDPSender queue size
  291.    - Increase UDPSender max packet lifetime
  292.    - Clear UDPSender queue before sending destroys to all
  293.    - Increase PeerState queue size so large streaming windows
  294.      don't get dropped right away, especially at slow start
  295.    - Various improvements on iterating over pending outbound
  296.      messages in PeerState
  297.  * Wrapper: Update armv7 to 3.5.15
  298.  
  299. 2012-08-27 kytv
  300.  * Update Java Service Wrapper to v3.5.15.
  301.     - Windows: Self-compiled with VS2010 in Windows 7. The icon has been
  302.       changed from Tanuki's default to Itoopie.
  303.     - FreeBSD: Self-compiled in FreeBSD 7.4 to eliminate the dependency on the
  304.       compat6x port.
  305.     - Linux ARMv5, Linux PPC32: Self-compiled in Debian Squeeze
  306.     - Linux x86, Linux x64, MacOSX & Solaris: Binares are from the "community
  307.       edition" deltapack offered by Tanuki. The x86 and x64 binaries for Linux
  308.       have been stripped.
  309.  
  310. 2012-08-26 zzz
  311.  * DataHelper: Trim trailing whitespace when loading properties
  312.  * NetDB: Increase floodfills, decrease flood redundancy
  313.  * SendMessageOptions: Increase tag fields to 4 bits and use
  314.                        table lookup for more flexibility
  315.  * Streaming: Use packet type and current window size to adjust
  316.               number of tags sent and tag threshold, to improve
  317.               efficiency and reliability
  318.  
  319. 2012-08-25 kytv
  320.  * Dutch and German translation updates from Transifex
  321.  * Router console typo fixes (#701)
  322.  
  323. 2012-08-25 zzz
  324.  * SDSCache: Reduce min and increase max size
  325.  * SimpleByteCache: Change from LBQ to ABQ to reduce object churn
  326.  * Other object churn cleanups (ticket #699)
  327.  
  328. 2012-08-24 zzz
  329.  * I2CP:
  330.    - Add methods for sending a message with extended options
  331.    - Fix cases where the efficient sendNoEffort() wasn't being used
  332.  * i2psnark:
  333.    - Use extended I2CP options for datagrams
  334.    - Fix timeout for sent datagrams
  335.    - Add link for local torrent file on details page
  336.    - Show totals line even if only one torrent
  337.    - Reduce token timeout
  338.    - Check token age before use
  339.    - Limit incoming token size
  340.  * OCMOSJ:
  341.    - Implement per-message overrides for tag threshold,
  342.      tags to send, and bundle leaseset
  343.    - Fix bug adjusting timeouts
  344.    - Warn on client expiration time bugs
  345.  
  346. 2012-08-23 zzz
  347.  * Crypto: Rename bouncycastle HMAC libs so they don't conflict
  348.    with older Android versions which bundle them
  349.  * NTCP: Reduce lock contention (ticket #697)
  350.  * SSU:
  351.    - Don't relay or introduce to/from privileged ports
  352.    - Various spoof detections
  353.  
  354. 2012-08-22 zzz
  355.  * NetDB: Add hash collision detection
  356.  * SimpleTimer2: Synchronization improvements (ticket #653)
  357.  * SSU:
  358.    - Fail establishment immediately on SessionCreated
  359.      validation fail
  360.    - Defer outbound DH generation until required
  361.    - Validate address/port in RelayIntro messages
  362.    - Throttle hole punches
  363.    - Workaround for Android ICS bug
  364.    - More cleanups
  365.  
  366. 2012-08-21 zzz
  367.  * NetDB: Decrease stat publish probability
  368.  * SSU:
  369.    - Use external, not internal port to sign SessionCreated message.
  370.      Together with previous fix to allow external port change, this
  371.      should fix session establish fails when NAT changes our port
  372.    - Track outbound establishments by both Hash and IP/port,
  373.      to improve lookups of establishments in progress
  374.    - Fix expiration of outbound establishments
  375.    - Validate address/port in RelayResponse messages
  376.    - Change RemoteHostID to store Hash instead of byte[] for the peer hash
  377.    - Log tweaks
  378.  
  379. 2012-08-20 zzz
  380.  * I2CP: MessageStatus cleanup
  381.  * i2psnark: Add minimum tracker and DHT announce intervals
  382.  * I2PTunnelRunner: Remove unnecessary lock (ticket #690)
  383.  * SSU: Allow port change if firewalled
  384.  * Streaming: Increase max connection timeout
  385.  * UPnP:
  386.    - Prep for UPnP returning different external port
  387.    - Better logging of errors
  388.  
  389. 2012-08-18 kytv
  390.  * Fix hang during uninstallation experienced by some users in Windows
  391.  
  392. 2012-08-17 zzz
  393.  * i2psnark:
  394.    - Adjust DHT timeouts
  395.    - Add max peers per-torrent in tracker
  396.    - Remove duplicate clean task for nodes
  397.    - Fix another DHT warning message
  398.  * SSU:
  399.    - Use remote MTU when published (ticket #682)
  400.    - Queue outbound msgs during inbound establish
  401.    - IntroManager cleanups
  402.    - More synchronization
  403.  
  404. 2012-08-17 sponge
  405.  * BOB: just some cleanup of old, dead meaningless commentedout code
  406.         and a little reformatting.
  407.  
  408. 2012-08-16 zzz
  409.  * Utils: Drop unused BufferedRandomSource, PooledRandomSource,
  410.    EepGetScheduler, EepPost and HTTPSendData, moved to i2p.scripts
  411.  
  412. 2012-08-15 zzz
  413.  * i2psnark:
  414.    - Fix bug preventing completion announcement, broken in 0.9.1
  415.    - Fix setting short retry time after initial announce failure
  416.    - Fix DHT announce and getPeers
  417.    - Fix DHT warning message
  418.  * UPnP: Update to CyberLink 2.1 (ticket #427, possibly others)
  419.  
  420. 2012-08-13 zzz
  421.  * SSU EstablishmentManager:
  422.    - Remove use of outbound timers in EstablishmentManager; drive all events in Establisher thread
  423.    - Don't change nonces when retransmitting intro packets
  424.    - More synchronization in EstablishmentManager
  425.    - Increase establishment timeouts and implement timeouts for individual phases (ticket #669)
  426.    - Fix bug where InboundEstablishState.createdPacketSent() wasn't being called,
  427.      so SessionCreated packets weren't retransmitted
  428.    - Increase retransmission timeout for SessionCreated and implement backoff
  429.    - Send destroy if establishment times out in the middle
  430.    - Fix code that pulls outbound states off a deferred queue
  431.    - Improve UDPPacket.toString() for debugging
  432.    - More logging of packets dropped in EstablishmentManager
  433.    - Change establish states to enums
  434.  
  435. 2012-08-12 zzz
  436.  * Jetty: Don't use direct byte buffers that may be leaking (ticket #679)
  437.  * PeerManager: Fix NPE on Android (ticket #687)
  438.  * SSU:
  439.    - Reject some packet types if they came in via fallback introKey
  440.    - Increase retransmission timeout for SessionRequest, SessionConfirm,
  441.      and RelayRequest; implement backoff
  442.    - Move UDPFlooder to test
  443.    - More volatiles, finals, cleanups, stat removals, log tweaks
  444.  
  445. 2012-08-11 zzz
  446.  * DataHelper: toString(byte[]) cleanup
  447.  * i2psnark:
  448.    - Fix DHT nodes not being saved at shutdown
  449.  * RouterContext: Make the contexts list concurrent
  450.  * SSLEepGet: Don't throw UOE in TrustManager
  451.  * SSU MTU (ticket #682):
  452.    - Use local MTU detection
  453.    - i2np.udp.mtu now sets max MTU, not initial MTU
  454.    - Put local MTU in netDb 
  455.    - Fix receive MTU calculations
  456.    - Track remote MTU based on actual received packet size
  457.    - Display local MTU on peers page
  458.  
  459. 2012-08-10 kytv
  460. * German and Greek translation updates from Transifex
  461.  
  462. 2012-08-09 zzz
  463.  * Datagrams: Remove static logs
  464.  * i2psnark:
  465.    - Remove static SnarkManager instance
  466.    - Allow DHT-only torrents
  467.    - DHT debugging
  468.  * NTCP: Stat cleanup
  469.  * SAM:
  470.    - Don't use direct byte buffers that may be leaking (ticket #679)
  471.    - Volatiles and finals
  472.  * SSU:
  473.    - Don't send a packet that exceeds the MTU
  474.    - Stub out local MTU detection (ticket #682)
  475.    - More cleanups
  476.  
  477. 2012-08-07 str4d
  478.  * Console:
  479.    - Theme updates from dr|z3d
  480.    - Changed universal theming key so it is not mistaken as a theme
  481.      name by the routerconsole
  482.  * i2psnark:
  483.    - Theme updates from dr|z3d
  484.    - If universal theming is set and routerconsole theme is classic,
  485.      use light theme explicitly
  486.  * susidns: new midnight theme from dr|z3d
  487.  
  488. 2012-08-06 zzz
  489.  * Clone System properties before iterating to avoid
  490.    ConcurrentModificationException (ticket #680)
  491.  * Console: Fix flag links on /console to return to same page
  492.  * i2psnark: Add support for DHT (disabled by default)
  493.  * jbigi: Add ARMv6 libjbigi.so for Raspberry Pi
  494.  
  495. 2012-08-05 zzz
  496.  * I2PSessionImpl: One more volatile (ticket #659)
  497.  * i2ptunnel, I2CP, EepGet: Buffer socket input streams (ticket #666)
  498.  * UDP:
  499.    - Limit PacketHandler threads to 1 (ticket #660)
  500.    - Limit queue sizes between UDPReceiver and PacketHandler,
  501.      and between PacketHandler and MessageReceiver, to prevent OOMs
  502.      and/or excessive queue delays
  503.    - Increase UDPPacket cache size based on max mem
  504.    - Remove more stats
  505.  
  506. 2012-08-03 zzz
  507.  * build.xml: Add buildI2PTunnelJar target for Android
  508.  * i2psnark: Finish migration to I2P logging to reduce object churn (ticket #673)
  509.  * LogManager: Add logger.logBufferSize and logger.dropOnOverflow options (ticket #662)
  510.  * JobQueue: Synch fix (ticket #670)
  511.  * OutNetMessage: Fix NPE when log level = INFO (ticket #676)
  512.  * SimpleScheduler, SimpleTimer2: Replace getInstance() calls
  513.  * UDP:
  514.    - Catch some cases where UDPPackets were not returned to the cache (ticket #675)
  515.    - Fix inverted logging logic (ticket #663)
  516.    - Remove check in UDPPacket.getLifetime() (ticket #664)
  517.    - RemoteHostID cleanup, cache hashcode
  518.    - Remove udp.fetchRemoteSlow stat
  519.    - Remove some time stamping in UDPPacket
  520.    - Other cleanups - see http://zzz.i2p/topics/1198
  521.  
  522. 2012-08-03 str4d
  523.  * Console: universal theming support - packaged apps will try and use the routerconsole
  524.    theme if universal theming is enabled there and the same theme exists for the app.
  525.  
  526. 2012-07-31 str4d
  527.  * core, router:
  528.    - Existing JUnit test framework fixed up and running.
  529.    - Code coverage tools (Clover and Cobertura) integrated into unit test targets.
  530.    - Implemented new test-related targets to provide a ScalaTest test framework.
  531.  
  532. 2012-07-30 zzz
  533.  * build.xml: Move more default properties to build.properties
  534.  * DecayingBloomFilter, DecayingHashSet, xlattice filters:
  535.    - Move from core to router
  536.    - Comment out tests
  537.  * ElGamal/AES/SessionTag:
  538.    - Increase TX expire from 10 to 12 min, while keeping RX expire at 15 min.
  539.      3 minutes should be plenty of clock skew + delay.
  540.    - Move tags-to-send and low-threshold values to be per-SKM
  541.    - New session config options crypto.tagsToSend and crypto.lowTagThreshold
  542.    - Prep for per-packet override of tags and thresholds
  543.    - Cleanups and Javadocs
  544.  * GarlicMessageBuilder:
  545.    - Put data clove last to speed acks and leaseset store on far end
  546.  * I2PTunnel: Add some defaults for the new session config options
  547.  * OCMOSJ:
  548.    - Don't bundle LeaseSet just because we're requesting an ACK
  549.    - Changed session config option shouldBundleReplyInfo to default to true
  550.      and be used to disable bundling altogether when set to false.
  551.      Was previously an undocumented option to force bundling with a certain probability.
  552.    - Don't send tags unless we've already generated a reply token (race)
  553.    - Cleanups and Javadocs
  554.  * RoutingKeyGenerator: Cleanups (ticket #672)
  555.  
  556. * 2012-07-30 0.9.1 released
  557.  
  558. 2012-07-28 str4d
  559.  * Console: theme fixes
  560.  
  561. 2012-07-26 kytv
  562. * Update geoip.txt based on Maxmind GeoLite Country database from 2012-07-04
  563. * Finnish, French, German, Spanish and Swedish translation updates from TX
  564.  
  565. 2012-07-26 sponge
  566. * BOB Fix static references to Log
  567.  
  568. 2012-07-24 sponge
  569.  * BOB reset spin flag to enable restart from zap command
  570.  
  571. 2012-07-24 str4d
  572.  * Summary bar: disable fallback iframe in summary.jsi (so when JS is disabled
  573.    the summary bar will not refresh at all)
  574.  * Home page:
  575.    - Replaced 16x16 icons with 32x32 ones
  576.    - Updated icon for git.repo.i2p
  577.    - Moved RestartStatus back above LocalDestinations
  578.  
  579. 2012-07-24 zzz
  580.  * LookaheadInputStream: Fix bug causing gunzip fails, esp. on Android
  581.  * Router: Don't create router.ping file on Android
  582.  * SSLEepGet: Fix on Android (ticket #668)
  583.  
  584. 2012-07-21 zzz
  585.  * i2psnark: Remove dark theme
  586.  * Reseed: Add new cert for cowpuncher
  587.  * SSU: Remove exception creation (ticket #665)
  588.  
  589. 2012-07-21 str4d
  590.  * Home page: unlinked the iframed pages for i2psnark and susimail (the pages
  591.    /webmail and /torrents still exist, but the console links to the apps
  592.    directly instead for now)
  593.  
  594. 2012-07-19 str4d
  595.  * Home page: replaced itoopie with an eepsite icon (c/o dr|z3d) for eepsites
  596.    with no icon of their own.
  597.  * i2psnark:
  598.    - New light theme (c/o dr|z3d) which integrates with console light theme
  599.    - Moved table heading text into tooltips to reduce visual clutter
  600.  
  601. 2012-07-18 str4d
  602.  * Home page: Added id3nt.i2p and git.repo.i2p
  603.  
  604. 2012-07-18 zzz
  605.  * Home page: Add colombo-bt.i2p, remove keys.i2p
  606.  * i2psnark: Clear rate stats when restarting torrent
  607.  
  608. 2012-07-16 str4d
  609.  * console: work towards better integration
  610.    - Wrapped the bundled apps in iFrames (with a link in the page header to
  611.      open the app in a new tab):
  612.      - i2ptunnel
  613.      - i2psnark
  614.      - susimail
  615.      - susidns
  616.    - Theme improvements
  617.      - Added theme support to susimail and susidns
  618.        - "susimail.theme=foo" in susimail.config
  619.        - "theme=foo" on susidns config page
  620.      - Extensive work on dark console theme (dr|z3d)
  621.        - Improved integration of i2ptunnel in iframe
  622.        - General improvements
  623.      - New dark themes for i2psnark, susimail and susidns which integrate well
  624.        with dark console theme (dr|z3d)
  625.      - Tweaks to other themes (console and i2psnark) to work with the various
  626.        structural changes (dr|z3d)
  627.      - Added per-theme favicons
  628.      - Updated IE shim to fix some issues
  629.    - Summary bar improvements
  630.      - Updated every console page to use Ajax for the summary bar
  631.        - Falls back to iFrame if JS disabled
  632.        - Ajax refresh time is adjustable
  633.      - The summary bar is now customizable; sections can be added, removed and
  634.        reordered as desired
  635.      - Added/updated tooltips
  636.      - Added a new summary bar section to show news headings when the main news
  637.        display is hidden
  638.    - Changes to structure of /home to bring it in line with rest of console
  639.  * i2psnark
  640.    - Reworked the torrent info/file manager page to improve the layout
  641.  
  642. 2012-07-15 zzz
  643.  * XORComparator: Reduce object churn (Ticket #658)
  644.  
  645. 2012-07-12 kytv
  646. * Translations from Transifex:
  647.   - Add new Greek translation
  648.   - Dutch translation update
  649.  
  650. 2012-07-01 zzz
  651.  * i2psnark:
  652.    - Don't send a keepalive to a peer we are going to disconnect
  653.    - Disconnect peer when idle a long time
  654.    - PeerCheckerTask cleanup
  655.    - Static ref cleanup
  656.    - Don't show a downloaded torrent file as "seeding"
  657.    - Better torrent file download icon
  658.  
  659. 2012-06-29 zzz
  660.  * HTTP Proxy: Change the error code for unknown host from 404 to 500
  661.  * SimpleTimer: Fix logging
  662.  * Streaming:
  663.    - Allow at least 3 packets and up to half the window to be active resends
  664.      instead of just 1, to reduce stall time after a packet drop
  665.    - Increase fast retransmit threshold back to 3 to reduce retransmissions
  666.    - Don't fast retransmit if we recently retransmitted it already
  667.    - Allow double the window as long as gaps are less than the window
  668.    - Don't set the MSS in a resent packet (saves 2 bytes)
  669.    - Remove redundant calls to updateAcks()
  670.    - Update activity timer when resending a packet
  671.    - Reset unackedPacketsReceived counter at all places where acks are sent
  672.      so it isn't wrong
  673.    - Fix some places where the activeResends count could become wrong
  674.    - Prevent storm of CLOSE packets
  675.    - Never resend the whole packet in ackImmediately(), just send an ack
  676.    - Cancel flusher timer in MessageOutputStream when closed
  677.    - Move some createRateStats to ConnectionManager to reduce repeated calls
  678.    - Cleanups, javadocs, logging, volatile, finals
  679.  * Update: Increase eepget timeouts
  680.  
  681. 2012-06-24 zzz
  682.  * ElGamalAESEngine: Fix bad size estimate when tags are included,
  683.                      resulting in trailing zeros after the padding
  684.                      in the unencrypted data
  685.  * i2psnark: Don't create a new PeerCoordinator after restart, as the
  686.              TrackerClient holds on to the old one and that causes it
  687.              to not get peers. Possibly fixes ticket #563.
  688.  * I2PTunnel: Fix NPE on shared client creation, thx kytv
  689.  * Transport: Add Ethiopia to hidden mode list
  690.  
  691. 2012-06-21 zzz
  692.  * I2CP: Make separate message ID counters per-destination, use atomic,
  693.          increase max (could have caused "local loopback" problems)
  694.  * IRC Client: Don't flush output unless out of input, so the
  695.                streaming messages don't get split up unnecessarily
  696.  * OCMOSJ, ElG, Streaming: log tweaks
  697.  * TunnelInfo: Change msg counter from long to int
  698.  * TunnelPeerSelectors: Minor refactoring to store context
  699.  * TunnelPool: Fix bug where a tunnel was marked as reused when it wasn't
  700.  * TunnelPoolManager: Use one ClientPeerSelector for all pools
  701.  
  702. 2012-06-20 zzz
  703.  * I2PSession:
  704.    - Greatly simplify the VerifyUsage timers
  705.    - Constructor cleanup
  706.  
  707. 2012-06-19 zzz
  708.  * i2psnark:
  709.    - Hide buttons while stopping all
  710.  * Socks: Pass remote port through
  711.  * Streaming:
  712.    - Listen only on local port if set
  713.    - Listen only for streaming protocol if configured (new option)
  714.    - Javadocs re: ports
  715.  
  716. 2012-06-18 zzz
  717.  * i2psnark:
  718.    - Improve torrent shutdown handling to maximize chance of
  719.      announces getting to tracker
  720.    - Thread task to open tunnel and improve UI feedback while open is pending
  721.    - Clean up delete-torrent messages
  722.    - Remove redundant shutdown hook
  723.    - Avoid NPE in PEX message handling
  724.    - Log tweaks
  725.  
  726. 2012-06-15 zzz
  727.  * I2PSocketEepGet: Use specified port
  728.  * I2PTunnel:
  729.    - Don't strip port from an I2P URL
  730.    - More client options cleanups
  731.    - Options changes now propagate to running
  732.      socket managers and sessions, and through to the router
  733.    - Better parsing of jump server URLs
  734.  * NetDB: Only publish stats every so often, to improve
  735.    anonymity while preserving the ability to monitor
  736.    the network (effective next release)
  737.  * SocketManager:
  738.    - Simplify factory, use 4-arg constructor,
  739.      make fields final, deprecate 0-arg constructor
  740.    - Improve how options are updated
  741.    - Javadocs
  742.  
  743. 2012-06-13 zzz
  744.  * I2PSocketEepGet: Set port to 80
  745.  * I2PTunnel:
  746.    - Pass port through HTTP client proxy
  747.    - HTTP server proxy sets host header to
  748.      the value of "spoofedhost.xx" option for port xx
  749.    - Set client options more efficiently
  750.  * i2psnark: Possible fix for piece-after-choke
  751.  * Streaming:
  752.    - Channel cleanups and comments
  753.    - New I2PSocketAddress
  754.  
  755. 2012-06-11 zzz
  756.  * i2psnark:
  757.    - Display torrent file downloads in torrent area
  758.    - Sort magnets and downloads first
  759.    - Fix sorting problem when torrent dir is a symlink
  760.    - Reduce max file idle time
  761.    - Reduce TrackerClient threads
  762.    - Reduce delay between peer adds for faster startup
  763.    - Thread the announces and reduce timeout when stopping
  764.  * NativeBigInteger: Workaround for Raspberry Pi to load the correct lib
  765.  * Router: Don't let shutdown tasks hang the shutdown (tickets #564, #566)
  766.  
  767. 2012-06-08 zzz
  768.  * i2psnark:
  769.    - Move private tracker config from create box to torrent config
  770.    - Refactor private and open tracker configuration
  771.    - Add private indication on details page
  772.  * netdb.jsp: Don't show our info on summary page
  773.  
  774. 2012-06-04 zzz
  775.  * i2psnark: Take tracker out of opentracker list when removed
  776.  
  777. 2012-06-03 kytv
  778. * Translation updates:
  779.   - Add Hungarian language from Transifex (thanks AdminLMH!)
  780.   - Italian language updates from Transifex (thanks ColumboBT)
  781.  
  782. 2012-06-02 zzz
  783.  * i2psnark: Improve opentracker configuration
  784.  * Job Queue: Add failsafe check
  785.  
  786. 2012-06-01 zzz
  787.  * Console: Tab the netdb and profile pages
  788.  * i2psnark: Fix partially-complete torrent not announcing
  789.  * NetDB: Reduce flood redundancy from 8x to 6x
  790.  
  791. 2012-05-31 zzz
  792.  * i2psnark:
  793.    - Add per-hour conn limit
  794.    - Blacklist peer after two bad handshakes
  795.    - Reduce connect timeout
  796.    - Close connection immediately if bad protocol
  797.    - Stop adding peers when we hit the limit
  798.    - Lower limit for outbound connections so we give
  799.      new peers a better chance in large swarms
  800.  
  801. 2012-05-30 zzz
  802.  * Graphs: Reduce log EOF error to warn
  803.  * i2psnark:
  804.    - Increase max upload (ticket #645)
  805.    - Increase per-minute conn limit from 6 to 8
  806.    - Improve rarest-first behavior
  807.    - Handle URI encoding, UTF-8, and multiple trackers in magnet links
  808.  * Timestamper:
  809.    - Move from core to router, leave stub in core
  810.      so it doesn't break compatibility. This removes a
  811.      thread in app context and prevents any app context from
  812.      running NTP; external clients must use the time
  813.      received from the router.
  814.    - Increase query interval
  815.  
  816. 2012-05-28 kytv
  817.  * i2prouter: Add support so that 'i2prouter install' will work in ArchLinux
  818.  * jbigi/jcpuid scripts: Improve support for ArchLinux
  819.  
  820. 2012-05-25 kytv
  821.  * German, Italian, Spanish, and Swedish translation updates from Transifex
  822.  
  823. 2012-05-23 zzz
  824.  * i2psnark:
  825.    - Fixes when complete except for skipped files
  826.      (ticket #447) status in UI, don't connect outbound,
  827.      disconnect seeds when done
  828.    - Custom tracker map AIOOBE fix
  829.    - More classes pkg private
  830.  * jobs.jsp: Add more queue diagnostics
  831.  
  832. 2012-05-22 zzz
  833.  * i2psnark:
  834.    - Refactor tracker map
  835.    - Prevent torrent shutdown when changing file priority to skip
  836.    - Fix deadlock when changing file priorities
  837.  * RoutingKeyModifier: Update after large clock shift
  838.  
  839. 2012-05-20 zzz
  840.  * Console: Add full file path to thread dump message
  841.  * i2psnark:
  842.    - Create sparse files at torrent creation and delay
  843.      "ballooning" until first write (ticket #641, #447)
  844.    - Redo clear messages button
  845.    - Concurrent message queue
  846.  * Profiles: reduce same-country bonus
  847.  * RoutingKeyModifier: Several changes to ensure the routing key
  848.                        is correctly changed just after midnight.
  849.  
  850. 2012-05-19 zzz
  851.  * i2psnark:
  852.    - Store received chunks in temp files
  853.    - Don't allocate from heap for unneeded chunks
  854.    - Remove peer count restriction for torrents with large pieces
  855.    - Use priorities and rarest calculations to sort partials
  856.    - Preserve p parameter in clear messages link
  857.  
  858. 2012-05-13 zzz
  859.  * Console: Add X-Frame-Options to headers,
  860.    disable with routerconsole.disableXFrame=true
  861.  
  862. * 2012-05-02 0.9 released
  863.  
  864. 2012-04-26 kytv
  865.  * German, Spanish, and Swedish Translation updates
  866.    from Transifex
  867.  
  868. 2012-04-20 zzz
  869.  * Remove search box
  870.  * Fix i2psnark dir when started from Windows no-wrapper
  871.    (ticket #627)
  872.  
  873. 2012-04-14 kytv
  874.  * Update wrapper to v3.5.14
  875.  * Update geoip.txt from Maxmind's April 2012 database
  876.  
  877. 2012-04-12 kytv
  878.  * German, Spanish, and Swedish translation updates from Transifex
  879.  
  880. 2012-04-12 zzz
  881.   * Console:
  882.     - Try again to fix console on Windows w/o IPv6
  883.       by starting connectors individually
  884.     - Fix whitespace issues on several pages
  885.     - Prevent rare early NPE
  886.     - Non-default theme cleanups
  887.     - Theme and translate home page logo
  888.  
  889. 2012-03-28 zzz
  890.   * RouterInfo: Fix fatal NPE in last checkin
  891.  
  892. 2012-03-27 zzz
  893.   * FloodfillVerify:
  894.     - Fix verifies stuck on one peer by blamimg the verify peer on failure
  895.     - Follow DSRM in response to RI verifies
  896.     - Increase floodfill verify timeout
  897.   * Home page: Delay router down message until two consecutive fails
  898.   * RouterInfo: Add method to validate sig during read-in for speed
  899.  
  900. 2012-03-27 sponge
  901.   * A hopeful fix to allow SHOUTcast/icecast to work over the http proxy.
  902.   * A little more code clean up
  903.  
  904. 2012-03-26 zzz
  905.   * Code cleanups:
  906.     - Remove unused imports
  907.     - Remove unused local variables
  908.     - Remove unused private fields
  909.     - Remove unnecessary casts
  910.   * Console:
  911.     - Try again to fix console on Windows w/o IPv6 (ticket #621)
  912.     - Move oldconsole rendering from Router to OldConsoleHelper
  913.  
  914. 2012-03-24 zzz
  915.   * GarlicConfig: Remove more unused methods
  916.   * i2psnark:
  917.     - Fix dup torrent msg with magnets (tickets #433 and #504)
  918.     - Fix state when storage dies during transition out of magnet mode
  919.     - Fix NPE in magnet mode
  920.     - Error logging improvements
  921.     - Support add-torrent with infohash alone
  922.     - CSS tweaks
  923.  
  924. 2012-03-22 zzz
  925.   * Home page: CSS tweaks
  926.   * Reseeder: Get rid of static instance, root in netDB,
  927.               don't use system properties for status
  928.   * RetransmissionTimer: Instantiate per-destination
  929.   * Router: When removing a config setting, remove from context also
  930.   * SimpleScheduler, SimpleTimer, SimpleTimer2: Replace static instances
  931.     with I2PAppContext-rooted references
  932.  
  933. 2012-03-20 zzz
  934.   * i2psnark: Message area tweaks and clear link
  935.   * NetDB:
  936.     - Don't reread RI if netdb date is recent
  937.     - Prevent LS/RI overwrites
  938.     - Disallow hash mismatches in RI files
  939.     - Reseed won't fetch our own RI
  940.     - Reseed won't overwrite recent RIs
  941.   * Router: Make runRouter() public
  942.  
  943. 2012-03-19 sponge
  944.   * Plugins: Less confusing message, fix CNFE by catch and ignore on delete.
  945.              Order and reverse order plugin names for start/stop all cases.
  946.  
  947. 2012-03-18 zzz
  948.   * Jetty: Fix check alias override
  949.  
  950. 2012-03-17 zzz
  951.   * BuildHandler: Implement restart and shutdown to stop the thread
  952.   * Jetty: Don't extract wars
  953.   * FileUtil: Better logging of weird unpack200 errors
  954.   * I2PTunnel: Make CLI-only methods private, and static where possible
  955.   * Streaming: Scheduler cleanup
  956.  
  957. 2012-03-16 zzz
  958.   * FragmentHandler: Zero-copy read of unfragmented messages
  959.                      for speed and to reduce object churn
  960.   * Home page: Tag tooltip; CSS tweaks; news tweak
  961.   * HTTP Proxy: Jump and addresshelper page tweaks
  962.   * Jetty: Add I2P mime types to default eepsite config
  963.   * OCMOSJ: Refactor cache to its own class, make non-static
  964.   * TransportManager: Fix fatal exception on soft restart caused by DHSKB refactoring
  965.   * TrustedUpdate: Preserve default key names even when keys are set
  966.                    in advanced config
  967.  
  968. 2012-03-15 sponge
  969.   * Plugins:
  970.     - String.isEmpty() [ java 6 ] -> (String.length() == 0) [ java 5 ]
  971.     - for a file: URL, use "Attempting to copy plugin from" message
  972.     - s/{0}// on non-translated string
  973.     - grammar: "File copy failed {0}" -> "Failed to copy file from {0}"
  974.     - use the context provided to get startup time
  975.     - getCanonicalPath() -> getAbsolutePath()
  976.     - install != update. Don't change the user's settings, and don't restart
  977.       it on an update if "dont-start-at-install". This gives the same
  978.       functionality as before.
  979.  
  980. 2012-03-14 zzz
  981.   * Blockfile, i2psnark: Remove static logs
  982.   * DHSessionKeyBuilder:
  983.     - Move from core to router/transport
  984.     - Make non-static, instantiate in TransportManager
  985.     - Generate keypair in constructor and make final
  986.       to move more processing to the precalc thread
  987.       and eliminate races
  988.     - Synchronize getSessionKey() to eliminate races
  989.     - Comment out unused methods
  990.   * Jetty:
  991.     - Set default cache-control for webapps and eepsite
  992.     - Disable dir listing for console webapps
  993.   * UDPTransport:
  994.     - Make key builder final in InboundEstablishState to
  995.       eliminate rare NPE (ticket #406)
  996.     - Remove unused static instance
  997.   * YKGenerator: Make non-static, instantiate in ElGamalEngine
  998.  
  999. 2012-03-13 sponge
  1000.   * Add sponge.i2p :-D bump version.
  1001.  
  1002. 2012-03-13 sponge
  1003.   * Plugins:
  1004.     - Fix a bug in the updater. It was not comparing the correct name.
  1005.     - Plugin updates can now be deferred if router-restart-required is set.
  1006.       The update happens at the next router restart.
  1007.  
  1008. 2012-03-13 sponge
  1009.   * Plugins:
  1010.      - Handle 'file://' URLs for installation and updates (ticket #429).
  1011.        You must specify the entire path, e.g.
  1012.        file:///home/someone/magicplugin.xpi2p
  1013.        - This works for updates too!
  1014.        - Only tested on Linux, needs to be tested on Windows.
  1015.  
  1016. 2012-03-12 zzz
  1017.   * Console:
  1018.     - Better IPv6 test, hopefully will work on Windows
  1019.     - Hide home page flags once language is selected
  1020.     - Home page shrinkage and other CSS tweaks
  1021.  
  1022. 2012-03-11 sponge
  1023.   * Slackware package script updates
  1024.  
  1025. 2012-03-11 zzz
  1026.   * Build:
  1027.     - Include old commons logging classes in commons-logging.jar
  1028.     - Preserve manifests in Jetty/Tomcat jars
  1029.   * Jetty Logger: Promote warns to errors when a Throwable is the second arg
  1030.  
  1031. 2012-03-11 sponge
  1032.   * fix broken comment in jetty.xml
  1033.  
  1034. 2012-03-10 zzz
  1035.   * Build: Add new jetty jars to router.jar classpath so it works
  1036.     on very old installs with individual jars specified in the
  1037.     wrapper.config classpath
  1038.   * configloggging: Fix clearing log overrides
  1039.   * Console: Test if IPv6 addresses will work before instantiating
  1040.              connectors, so Jetty will still start without them
  1041.   * HTTP Proxy: Fix generation of jump links (ticket #616),
  1042.                 broken by refactoring in -1
  1043.   * Jetty Logger: Put a note in wrapper log saying where the logs went
  1044.  
  1045. 2012-03-09 zzz
  1046.   * Update default eepsite base context to use DefaultServlet
  1047.     instead of ResourceHandler, to provide resume, directory
  1048.     indexes, caching, etc.
  1049.   * Simplify default eepsite base and CGI contexts to use a Context
  1050.     instead of a ContextHolder, ServletHandler, and ServletHolder
  1051.  
  1052. 2012-03-08 zzz
  1053.   * GarlicConfig: Remove unused reply block methods
  1054.   * SessionKeyManager:
  1055.     - Don't use unacked tagsets after consecutive ack failures
  1056.       and revert to full ElGamal if necessary (ticket #574)
  1057.     - Synchronize creation of new sessions to prevent dups
  1058.     - Don't remove an unacked session until it's really out of tags
  1059.     - Failsafe removal of old unacked tagsets
  1060.     - Cleanups, final, comments, log tweaks, debug.jsp tweaks, synchronization tweaks
  1061.  
  1062. 2012-03-06 kytv
  1063.  * German and Spanish translation updates from Transifex
  1064.  
  1065. 2012-03-06 zzz
  1066.   * i2psnark: Fix NPE on magnet link addition
  1067.   * Jetty logger: Fix stack trace logging
  1068.   * viewstat.jsp: Properly close the ImageOutputStream to fix
  1069.     NPEs in the finalizer, probably was the root cause of
  1070.     what we blamed on Jetty
  1071.   * Webapp class loader: Fix dup classes in classpath
  1072.     caused by last checkin (symptom: i2psnark in wrong directory)
  1073.  
  1074. 2012-03-05 zzz
  1075.   * Build: Make windows and non-windows installers for release
  1076.   * configclients: Tweaks
  1077.   * Graphs: Add time interval to legend
  1078.   * NetDB: Increase min ff to 250
  1079.   * Plugins: Fix setting webapp classpath on Jetty 6
  1080.   * UDP: Log tweaks
  1081.   * viewstat.jsp: Set Connection: Close to work around Jetty bug
  1082.     http://jira.codehaus.org/browse/JETTY-1346
  1083.  
  1084. 2012-03-04 zzz
  1085.   * Jetty: Upgrade to Jetty 6.1.26, Tomcat 6.0.35, and JSTL 1.2.
  1086.     - Supports Servlet 2.5 / JSP 2.1 standards
  1087.     - Jetty and Tomcat jars are checked in, no more need to
  1088.       download Jetty in the build process.
  1089.     - Bundle Jetty 6 rewrite handler and JMX
  1090.     - Bundle sample Jetty config files for rewrite, JMX, and SSL
  1091.     - Use ant's ant.jar instead of the one from Jetty
  1092.     - Port router console, i2psnark, and I2PRequestLog code to Jetty 6
  1093.     - Remove all old Jetty 5 patches and the custom Server() constructor,
  1094.       this will break Seedless use of the custom constructor
  1095.     - Fix up all .jsps to JSP 2.1 standards
  1096.     - Include automatic migration of clients.config,
  1097.       and of jetty.xml files for an eepsite at port 7658.
  1098.       New config includes files in eepsite/contexts and eepsite/etc
  1099.       Any other Jetty-hosted eepsites,
  1100.       or an eepsite not at port 7658 or with custom
  1101.       modifications of the jetty.xml file, will require
  1102.       manual editing of the new Jetty config files.
  1103.       This includes modifications for the seedless server in jetty.xml.
  1104.     - The following plugins are not compatible with Jetty 6
  1105.       and will be disabled until updates are available:
  1106.          i2pcontrol, pebble, and zzzot
  1107.     - Users updating must use the updaterWithJetty build target once,
  1108.       to get the new Jetty and Tomcat.
  1109.     - Put I2PRequestLog in its own jetty-i2p.jar
  1110.     - Jetty logging moved from wrapper to I2P log using the new I2PLogger class,
  1111.       also in jetty-i2p.jar
  1112.   * Console: Start all wars after the main console war,
  1113.     for faster startup and to prevent one failed war from preventing
  1114.     startup of the entire console
  1115.   * i2psnark: Disable i2psnark RunStandalone, unused and instantiated Jetty 5
  1116.   * i2ptunnel: Move i2ptunnel Bean classes from the jar to the war.
  1117.     These were deprecated for external use long ago.
  1118.     This will break very old seedless plugins; updates have
  1119.     been available for months.
  1120.   * susimail: Copy MultiPartRequest and other required classes from Jetty 5.1.15
  1121.     and add it to susimail, as the replacement MultiPartFilter in
  1122.     Jetty 6 is difficult to migrate to, and does not support content-type
  1123.  
  1124. 2012-03-03 zzz
  1125.   * Console:
  1126.     - New simplified home page, refreshing with AJAX
  1127.     - New home configuration page
  1128.   * i2psnark:
  1129.     - CSS tweaks
  1130.     - Ajax and link fixes
  1131.     - Move js to console in prep for merging w/ homepage
  1132.   * NetDB: Remove bw stats (effective next release)
  1133.  
  1134. 2012-03-02 zzz
  1135.   * BlockfileNamingService: Add negative cache
  1136.   * Build: Add built-by to jars; check for corrupt jars on debug page
  1137.   * configstats.jsp: Hide log settings unless already enabled
  1138.   * DataStructures:
  1139.     - Remove static logs
  1140.     - Sort addresses in RouterInfo at initialization only;
  1141.       change from Set to List to save space
  1142.     - Remove unused counters in Lease to save space
  1143.     - Increase max leases to 16
  1144.   * Graphs:
  1145.     - New single graph page with easy resizing
  1146.     - Support graphing of previous intervals
  1147.   * i2pinstall.exe: Add icon
  1148.   * i2psnark:
  1149.     - Add tracker configuration form
  1150.     - Remove custom tracker option from create form
  1151.     - Add private torrent option
  1152.     - More icons in buttons
  1153.     - Use js for refresh
  1154.   * I2PTunnelHTTPClient:
  1155.     - Refactoring to use Java URI parser to better handle
  1156.       escapes, IPv6 addresses, ports
  1157.     - Rewrite i2paddresshelper scanning/removal
  1158.     - Refactor out local server code
  1159.     - Nicer address helper error page
  1160.   * NetDB:
  1161.     - Reenable verify of RI stores, disabled in 0.7.9,
  1162.       checkin comments claim reenabled in 0.7.10 but didn't happen.
  1163.     - Synchronize StoreJob.sendNext() to avoid dups
  1164.   * netdb.jsp: Fix debug leaseset count again
  1165.   * susidns: Add b64 hash to details page
  1166.  
  1167. * 2012-02-27 0.8.13 released
  1168.  
  1169. 2012-02-22 kytv
  1170.   * Updated German, Italian, Spanish, Swedish, and Ukrainian translations
  1171.     from Transifex.
  1172.  
  1173. 2012-02-22 zzz
  1174.   * ExploratoryPeerSelector: Use fast peers if hidden for
  1175.     inbound tunnels to improve success
  1176.   * NetDB:
  1177.     - Don't publish our RI if it has no addresses
  1178.     - Publish our RI sooner after startup
  1179.       to facilitate our IB tunnel builds
  1180.  
  1181. 2012-02-20 zzz
  1182.   * i2ptunnel:
  1183.     - Fix streamr session registration
  1184.     - Don't delete privkey file for a non-persistent client tunnel
  1185.       (ticket #599)
  1186.   * Streaming: Fix race NPE (thx echelon)
  1187.  
  1188. 2012-02-17 zzz
  1189.   * i2psnark: Escape fixes
  1190.   * netdb.jsp: Fix debug median calculation
  1191.  
  1192. 20112-02-17 kytv
  1193.   * Add Czech language from Transifex (thanks Waseihou)
  1194.  
  1195. 2012-02-12 str4d
  1196.   * i2ptunnel: Tunnel creation wizard
  1197.  
  1198. 2012-02-10 zzz
  1199.   * WorkingDir: Fix detection of migrated directory
  1200.  
  1201. 2012-02-09 zzz
  1202.   * i2psnark: Escape semicolons
  1203.  
  1204. 2012-02-04 zzz
  1205.   * Deprecate util classes used only by installer
  1206.   * ProfileOrganizer: Add profileOrganizer.sameCountryBonus config
  1207.   * WorkingDir: Reset dates of eepsite files while migrating
  1208.                 to avoid exposing install time (thx Z6)
  1209.   * Wrapper files:
  1210.     - Move PID and status files to config dir in i2prouter
  1211.     - Don't set PID files in wrapper.config as Windows doesn't need them
  1212.       and the wrapper won't start if the dir doesn't exist
  1213.     - Move wrapper.log to config dir using override in i2prouter,
  1214.       Windows stays in system temp dir
  1215.     - Move wrapper.log to config dir for no wrapper
  1216.     - Move wrapper.log setup for no wrapper from RouterLaunch
  1217.       to WorkingDir
  1218.     - Redirect stderr too when no wrapper
  1219.     - Create config dir in i2prouter for Linux/Mac
  1220.  
  1221. 2012-02-02 kytv
  1222.  * Ukrainian and Polish translation updates from Transifex
  1223.  
  1224. 2012-01-30 zzz
  1225.   * i2psnark: More illegal chars
  1226.   * LogWriter: Don't rotate and open file until first message
  1227.   * SusiDNS: Reduce listings to 50/page
  1228.  
  1229. 2012-01-27 zzz
  1230.   * Build: Repack release jars with pack200 -r, saves about 1% and
  1231.            might save a little memory at runtime too
  1232.   * confignet: Add UDP disable option
  1233.   * SAM: Remove client demo classes from sam.jar
  1234.  
  1235. 2012-01-26 zzz
  1236.   * configclients: Fix form action default
  1237.   * NetDB: Increase min ff to 200
  1238.   * Plugins: Fix updated count
  1239.   * SusiDNS: Make UI 1-based
  1240.  
  1241. 2012-01-24 zzz
  1242.   * Addresses: Fix NPE if no interfaces found http://forum.i2p/viewtopic.php?t=6365
  1243.   * i2ptunnel: Fix white-on-white buttons on hover
  1244.   * Plugins: Add completion message after all-update check
  1245.   * susidns, susimail: Add icons to buttons
  1246.  
  1247. 2012-01-22 zzz
  1248.   * Transports: Bind only to a single interface if specified
  1249.                 as the host address and it's available (ticket #591)
  1250.   * VMCommSystem: Move to dummy directory
  1251.  
  1252. 2012-01-21 zzz
  1253.   * Build: Fix Windows build, version checking for release
  1254.   * Console summary bar: Move some code around
  1255.  
  1256. 2012-01-20 sponge
  1257.   * Fix too short of delay for http. It is up to the browser to time out
  1258.     in a shorter time, not the proxy. This is wreaking havoc on large
  1259.     downloads, similar to the issues that we had in the distant past with
  1260.     jetty's default timeout being too short.
  1261.  
  1262. 2012-01-18 zzz
  1263.   * I2PTunnel: Register ports with the PortMapper
  1264.   * Router:
  1265.     - Use new synchronized change-and-save-config methods
  1266.       to eliminate races with ReadConfigJob
  1267.   * Tunnels:
  1268.     - When a peer is shitlisted, fail all our tunnels where
  1269.       that peer is the adjacent hop. In particular this
  1270.       will remove outbound tunnels when we can't contact
  1271.       the first hop, and enable quicker recovery.
  1272.   * Update: Find the proxy port in the PortMapper
  1273.  
  1274. 2012-01-16 hottuna
  1275.   * Router:
  1276.     - Don't throttle tunnel creation if using a higher
  1277.     - than default router.maxParticipatingTunnels setting.
  1278.  
  1279. 2012-01-16 zzz
  1280.   * Build: Put Implementation-Version in manifests
  1281.   * NetDB: Hopefully fix rare NPE (ticket #589)
  1282.   * Plugins:
  1283.     - Only stop a plugin before update if it was running
  1284.     - Only stop a plugin at shutdown if it was running
  1285.     - Don't start a plugin after update if it was disabled
  1286.     - Disable plugin if it fails version checks at startup
  1287.     - Auto-update plugins after a router update
  1288.     - Add update-all button and more cancel buttons
  1289.   * Router:
  1290.     - Add synchronized change-and-save-config methods to avoid races
  1291.     - Save previous version in config so we know when we updated
  1292.   * Transport: Revert change from -2, put addresses back in RouterInfo
  1293.                when hidden, broke inbound tunnel building
  1294.  
  1295. 2012-01-14 zzz
  1296.   * i2ptunnel: Partial fix for dest formatting (ticket #581)
  1297.   * jars.jsp: New debug page
  1298.   * logs.jsp: Use wrapper method to find wrapper log if available
  1299.   * Stats:
  1300.     - Cleanups
  1301.     - Remove some locking
  1302.     - Change some longs to ints to save space
  1303.     - Remove static logs
  1304.  
  1305. 2012-01-13 zzz
  1306.   * i2prouter: Add translation infrastructure
  1307.  
  1308. 2012-01-10 zzz
  1309.   * Console:
  1310.     - Add info to error 500 page
  1311.     - Add indication on summary bar when in VM comm system
  1312.     - Make graceful the default for HUP (ticket #580)
  1313.     - Fix class error on wrapper 3.1.1
  1314.   * i2prouter: Don't attempt to translate strings from script
  1315.   * Router:
  1316.     - Auto-hidden mode for bad countries
  1317.     - Don't put addresses in our RouterInfo when hidden
  1318.  
  1319. 2012-01-08 zzz
  1320.   * Plugins:
  1321.     - Enforce min and max Jetty versions at plugin installation
  1322.     - Enforce I2P, Java, and Jetty versions at plugin startup too
  1323.   * Router:
  1324.     - No longer check for updates or start any threads in the Router constructor,
  1325.     - for ease in building multiple routers in the JVM,
  1326.     - and also because starting threads in a constructor is bad practice.
  1327.     - All threads now start in runRouter().
  1328.     - Installation of updates now only happens via Router.main().
  1329.   * RouterInfo, RouterAddress: Optimizations and integrity checks
  1330.     - Remove synchronization
  1331.     - Do not allow contents to change after being set, throw IllegalStateException
  1332.     - Do not copy contents out in getters
  1333.     - Make options final
  1334.     - Add getOption() and getOptionsMap() methods
  1335.   * Router shutdown:
  1336.     - Fix failsafe shutdown hook broken in 0.8.8;
  1337.       HUP, INT, and TERM signals should now shut down cleanly.
  1338.     - Shutdown hook no longer prevents other hooks from running
  1339.     - Trap HUP, if router.gracefulHUP=true, and do graceful shutdown.
  1340.       Only under wrapper, non-Windows.
  1341.     - i2prouter stop now uses SIGTERM
  1342.     - Implement i2prouter graceful using SIGHUP (ticket #580)
  1343.     - Configure wrapper to ignore SIGUSR1 and SIGUSR2 as they will shut down
  1344.       or crash the JVM
  1345.  
  1346. 2012-01-06 kytv
  1347.   * EepGet: If transfer fails, exit with status 1 (fixes #576)
  1348.  
  1349. * 2012-01-06 0.8.12 released
  1350.  
  1351. 2012-01-04 kytv
  1352.   * Update geoip.txt based on Maxmind GeoLite Country database from 2011-12-08
  1353.  
  1354. 2012-01-02 kytv
  1355.   * Wrapper 3.5.13 for everything other than armv7.
  1356.  
  1357. 2012-01-02 zzz
  1358.   * Fix webapp PortMapper lookup for SSL-only console
  1359.   * Wrapper 3.5.13 for arm v7
  1360.  
  1361. 2011-12-31 zzz
  1362.   * Fix log NPE when saveConfig() fails at startup, thx kytv
  1363.    (backport from jetty6 branch)
  1364.  
  1365. 2011-12-30 zzz
  1366.   * New Estonian translation thanks ajutine
  1367.  
  1368. 2011-12-27 kytv
  1369.   * Spanish and Swedish translation updates from Transifex
  1370.  
  1371. 2011-12-23 zzz
  1372.   * Logging: Eliminate LogWriter/LogManager deadlock
  1373.  
  1374. 2011-12-18 zzz
  1375.   * Addresses: Add utility toString() methods
  1376.   * Blocklist: Buffer input to speed lookup
  1377.   * PersistentDataStore: Buffer file writes and reads
  1378.   * Router: Cleanup startup jobs and router.config reading; javadocs
  1379.   * Transport: Log tweaks
  1380.  
  1381. 2011-12-17 kytv
  1382.   * Ukrainian translation updates from Transifex
  1383.   * Add my key to TrustedUpdate.java
  1384.  
  1385. 2011-12-17 zzz
  1386.   * i2psnark:
  1387.     - Replace file name characters not supported in default charset
  1388.     - Add torrent file name to local details page
  1389.   * GeoIP: Reduce thread priority during lookup
  1390.   * ProfileManager: Make some methods non-blocking to reduce
  1391.                     lock contention in transports
  1392.  
  1393. 2011-12-15 kytv
  1394.   * Swedish translation updates from Transifex
  1395.  
  1396. 2011-12-14 zzz
  1397.   * BuildHandler: Increase next hop timeout again
  1398.   * DataHelper:
  1399.     - Speed up heavily used long/byte[] converters
  1400.     - Add little endian versions of the converters
  1401.     - Cache common properties keys
  1402.   * GarlicMessageParser: Use cached cert
  1403.   * GeoIP: Buffer input to speed lookup by 10x
  1404.   * I2NP: Disable pass-through checksum debugging
  1405.   * MessageHistory:
  1406.     - Flush at shutdown
  1407.     - Fix file location, only delete if enabled
  1408.     - Cleanups, concurrent
  1409.   * ResettableGZIPInputStream: Better footer log errors
  1410.   * RouterAddress: Cache transport names
  1411.   * TransportBid: Remove unused stuff
  1412.  
  1413. 2011-12-13 kytv
  1414.   * Don't require that full stats are enabled to be able to graph
  1415.     router.highCapacityPeers. (closes #450)
  1416.  
  1417. 2011-12-12 kytv
  1418.   * German and Spanish translation updates from Transifex
  1419.  
  1420. 2011-12-12 zzz
  1421.   * ExploreJob: Tweaks to handle DatabaseLookupMessage changes
  1422.   * I2NP:
  1423.     - Deprecate unused stream methods and I2NPMessageReader since
  1424.       all transports provide encapsulation.
  1425.     - Don't throw IOE from byte array methods
  1426.     - Use cached null cert in GarlicClove
  1427.     - Add method to limit size of buffer to read
  1428.     - Don't check checksum at input, in most cases
  1429.     - Reuse checksum at output, for unmodified pass-through messages
  1430.       (but recalculating it now and logging on a mismatch for testing)
  1431.     - Fix DatabaseLookupMessage to internally store the don't include peers as
  1432.       a List, not a Set, so it doesn't get reordered and break the checksum
  1433.     - Log cleanup
  1434.   * NTCP:
  1435.     - Zero-copy and limit size when handing buffer to I2NP
  1436.     - Log hex dump message on I2NPMessageException, like in SSU
  1437.     - Don't close connection on I2NPMessageException
  1438.   * PortMapper: New service for registering application ports in the context
  1439.   * ReusableGZIPInputStream: Fix 3 major bugs, all present since 2005:
  1440.     - Payloads an exact multiple of 512 bytes failed to decompress
  1441.     - Data at the end of the stream could be lost
  1442.     - read() returned -1 when the data was 0xff
  1443.   * SearchState: generics and cleanups
  1444.  
  1445. 2011-12-11 sponge
  1446.   * HTTP server tunnel, use log.WARN for 3 first minutes. (closes #460)
  1447.  
  1448. 2011-12-10 kytv
  1449.   * Replace eepget's whitelist of accepted characters with the
  1450.     blacklist from i2psnark. (closes #562)
  1451.  
  1452. 2011-12-09 zzz
  1453.   * Base64: Add decodestring command in main()
  1454.   * Console, i2psnark: More button CSS tweaks
  1455.   * I2NP:
  1456.     - Earlier detection and better logging of
  1457.       truncated TunnelGatewayMessage and DatabaseStoreMessage
  1458.     - Fix and enhance UnknownI2NPMessage implementation
  1459.     - Don't deserialize or verify the checksum of the
  1460.       embeddedI2NP message in the TunnelGatewayMessage
  1461.       at the IBGW, just use UnknownI2NPMessage and pass it along,
  1462.       except if zero hop; Still to do: similar thing at OBEP
  1463.     - Cleanups and javadoc
  1464.   * LeaseSet: Fix size calculations
  1465.   * UDP:
  1466.     - Fix major bug from 2005 that corrupted outbound messages
  1467.       that were an exact multiple of the fragment size.
  1468.     - Round expiration times when converting to seconds
  1469.     - Zero-copy of single-fragment messages in MessageReceiver
  1470.     - Optimizations, log tweaks, comments
  1471.  
  1472. 2011-12-06 zzz
  1473.   * Router:
  1474.     - More refactoring tasks to their own files
  1475.     - Adjust some thread priorities
  1476.   * Susimail: Adjust login form sizes
  1477.   * Tunnels: Increase next hop send timeout
  1478.   * UDP: Fix major MTU bug introduced in 0.8.9.
  1479.     - Change large MTU from 1492 to 1484 and small from 608 to 620
  1480.       for encryption padding efficiency
  1481.     - Enforce sent MTU limit
  1482.     - Increase receive buffer size from 1536 to 1572 so that excessive-sized
  1483.       packets sent by 0.8.9-0.8.11 routers aren't dropped
  1484.     - Limit the max acks in a data packet
  1485.     - Limit the duplicate acks in successive data packets
  1486.     - Only include acks that will fit in the mtu in a data packet
  1487.     - Correctly remove acks from the pending set after they are sent,
  1488.       so they aren't sent repeatedly
  1489.     - Don't pad data packets unless necessary
  1490.     - Debug logging and javadocs
  1491.  
  1492. 2011-12-04 zzz
  1493.   * Console:
  1494.     - Less icons on configclients.jsp
  1495.     - Fix some browsers breaking line on negative numbers
  1496.     - Tab CSS tweaks
  1497.   * i2psnark: Fix directories not always deleted when torrent is deleted
  1498.   * IRC Client: Lower log level for connect error to warn (thx echelon/sponge)
  1499.   * Tunnel RED:
  1500.     - Complete rework of participating traffic RED.
  1501.       Implement an accurate bandwidth tracker in FIFOBandwidthRefiller.
  1502.     - Fix drop priority of VTBM at OBEP
  1503.     - Lower drop priority of VTBRM at IBGW
  1504.     - Raise threshold from 95% to 120%
  1505.     - Remove unused things in HopConfig
  1506.   * UDP: Fix i2np.udp.allowLocal operation (thx Quizzers)
  1507.  
  1508. 2011-12-02 zzz
  1509.   * Console:
  1510.     - Summary bar tweaks
  1511.     - Config nav CSS tabs
  1512.     - CSS cleanups from last checkin
  1513.   * Susimail:
  1514.     - Login screen tweaks
  1515.     - Cleanups, generics, static
  1516.  
  1517. 2011-12-01 zzz
  1518.   * Console:
  1519.     - Split up config network page
  1520.     - CSS tweaks in summary bar
  1521.     - Spiff up the buttons
  1522.   * i2psnark:
  1523.     - Retry link on torrent download fail
  1524.     - Clear URL after clicking 'add torrent'
  1525.     - Message tweaks
  1526.     - CSS tweaks
  1527.   * IRC Server: Fix IOOBE (ticket #559)
  1528.   * Throttle: Update throttle status immediately on shutdown request;
  1529.               clear starting-up message after 20 minutes
  1530.  
  1531. 2011-11-29 zzz
  1532.   * Random: Use new nextBytes(buf, off, len) for efficiency
  1533.   * Router: Refactor periodic tasks to their own files
  1534.  
  1535. 2011-11-28 zzz
  1536.   * Specify locale in all toLowerCase() and toUpperCase() calls to
  1537.     avoid the "Turkish four i problem";
  1538.     replace most equalsIgnoreCase() calls too.
  1539.   * Update: Files listed in deletelist.txt will be deleted
  1540.  
  1541. 2011-11-28 kytv
  1542.   * IRCClient: Add IRCop commands (and other safe commands) to the whitelist
  1543.  
  1544. 2011-11-27 zzz
  1545.   * IRCClient: Outbound whitelist optimization
  1546.   * Reseed:
  1547.     - Restore i2pbote (ticket #516)
  1548.     - Remove r31453 (cert expiring, host soon to be shut down permanently)
  1549.  
  1550. 2011-11-26 zzz
  1551.   * DCCServer: Socket error log fix
  1552.   * NTCP: Fix pumper NPE (ticket #555)
  1553.  
  1554. 2011-11-23 zzz
  1555.   * CryptixAESEngine: Fix bogus bounds checks
  1556.   * NTCP:
  1557.     - More optimizations in recvEncrypted()
  1558.     - More efficient XOR
  1559.     - Reduce bandwidth stat update frequency
  1560.     - Check for repeated zero-length reads
  1561.   * RandomSource: Add new method getBytes(buf, offset, length)
  1562.   * Tunnel encryption: More efficient XOR
  1563.  
  1564. 2011-11-21 zzz
  1565.   * NTCP Pumper:
  1566.     - Ensure failsafe pumper code gets run on schedule
  1567.     - Don't copy the read buffers
  1568.     - Adjust minimum read buffers based on memory
  1569.     - New i2np.ntcp.useDirectBuffer option (default false)
  1570.     - Mark peer unreachable when read failure is during establishment
  1571.     - Change some Reader Lists to Sets to avoid linear search
  1572.     - Log tweaks, debugging, new loop stats
  1573.  
  1574. 2011-11-18 zzz
  1575.   * NTCP:
  1576.     - First cut at improving EventPumper performance (ticket #551)
  1577.     - Establishment timeout cleanup/concurrent
  1578.     - Remove some logging and stats
  1579.     - Switch some Queues from LBQ to CLQ
  1580.     - Static ByteBuffer cache
  1581.  
  1582. 2011-11-16 zzz
  1583.   * Console: Add Jetty version to logs page
  1584.   * NTCP: Reduce log level for race (ticket #392)
  1585.   * NTCPConnection: Concurrent PrepBufs
  1586.   * OutNetMessage: Remove some fields and methods used only in NTCP debugging
  1587.   * Router: Move router.ping file from temp directory to config directory
  1588.  
  1589. 2011-11-14 zzz
  1590.   * Console: Remove % chart at bottom of tunnels.jsp
  1591.   * Profiles: Only use same-country metric for countries with
  1592.     lots of I2P users
  1593.   * SusiDNS: Remove .jsp suffixes
  1594.  
  1595. 2011-11-12 zzz
  1596.   * Installer: Fix Ukrainian translation (ticket #550) thx rndnick
  1597.  
  1598. 2011-11-11 zzz
  1599.   * Console:
  1600.     - Less magic and fix img sizes, for speed and less artifacts while rendering
  1601.     - CSS tweaks
  1602.  
  1603. 2011-11-09 zzz
  1604.   * Console: Add ability to hide news
  1605.   * I2PTunnel IRC Client: Don't filter PASS (ticket #549)
  1606.   * Licenses: Update information
  1607.   * Router: Clean up config map methods and uses
  1608.   * wrapper.config: Increase shutdown timeout
  1609.  
  1610. * 2011-11-08 0.8.11 released
  1611.  
  1612. 2011-11-05 kytv
  1613.   * Update geoip.txt based on Maxmind GeoLite Country
  1614.     database from 2011-11-02
  1615.  
  1616. 2011-11-02 zzz
  1617.   * HTTP Proxy: Error page tweak
  1618.   * Reseed:
  1619.     - Add new host
  1620.     - Handle % escaping in file URLs
  1621.     - Do basic validation of router hash
  1622.     - Add some more sanity checks
  1623.  
  1624. 2011-11-01 kytv
  1625.   * Update Ukrainian translations from Transifex
  1626.   * Update i2prouter script for better compatibility with Gentoo
  1627.  
  1628. 2011-10-31 zzz
  1629.   * NetDB: Reduce max RI publish interval
  1630.   * ProfileOrganizer:
  1631.     - Fix expiration of old profiles
  1632.     - Don't exceed high cap limit between reorgs
  1633.     - Reduce max reorg cycle time
  1634.     - Reduce new bonus values
  1635.     - Fix rare NSEE thx sponge
  1636.   * SSU: Increase threshold for incremented cost
  1637.   * Tunnels:
  1638.     - Restore and implement lengthOverride()
  1639.     - Adjust quantity override
  1640.  
  1641. 2011-10-29 zzz
  1642.   * BuildHandler: Add router.buildHandlerThreads config setting
  1643.   * CapacityCalculator: Small adjustment for XOR distance to
  1644.     break ties and encourage closeness
  1645.   * ProfileOrganizer: Reduce min expire time
  1646.   * SSU: Limit max peers to use as introducers
  1647.  
  1648. 2011-10-28 zzz
  1649.   * BuildHandler: Move inbound request handling to its own thread(s)
  1650.     (ticket #542, see also http://zzz.i2p/topics/996)
  1651.   * CapacityCalculator: Small boost for connected peers, new peers, and
  1652.     same-country peers; deduct for recently-unreachable peers
  1653.   * DecayingBloomFilter: Whups fix NPE from previous checkin if log=INFO
  1654.   * NTCP: Reduce min idle time
  1655.   * SSU:
  1656.     - Increase default max connections again
  1657.     - Reduce min idle time
  1658.     - Separate out introducer pinger from introducer selection
  1659.       so it can be run separately and more often
  1660.     - Only ping introducers if we need them
  1661.   * Tunnels:
  1662.      - Reduce exploratory tunnel quantity if build success rate
  1663.        is very low, but may disable this later
  1664.      - Try rebuilding same tunnel (some of the time)
  1665.  
  1666. 2011-10-25 zzz
  1667.   * BloomSHA1, DecayingBloomFilter:
  1668.     - Refactor for concurrent, at some small risk of false negatives
  1669.     - Optimizations to cache objects and reuse offsets
  1670.   * Tunnels:
  1671.     - Make most classes package private
  1672.     - Final, static, logs, cleanups
  1673.     - Consolideate createRateStat calls
  1674.     - Add getTotalLength()
  1675.     - Remove unused lengthOverride()
  1676.   * UDP: Mark only first fragment as a duplicate
  1677.  
  1678. * 2011-10-20 0.8.10 released
  1679.  
  1680. 2011-10-19 kytv
  1681.   * Update Italian translation from Transifex (thanks danimoth)
  1682.  
  1683. 2011-10-19 zzz
  1684.   * I2PTunnel: Fix timeout message on POST (ticket #531)
  1685.   * NetDB: Reduce RI max expiration again
  1686.  
  1687. 2011-10-18 zzz
  1688.   * StoreJob: Ensure nonzero token
  1689.   * Tunnels: Connection limit mitigation:
  1690.     - Disable tunnel testing
  1691.     - Implement closest-to-the-key tunnel selection
  1692.     - Use closest-selection in NetDB lookups, stores, and verifies;
  1693.       OCMOSJ; and in BuildRequestor
  1694.  
  1695. 2011-10-17 zzz
  1696.   * BuildExecutor: Efficiency tweak
  1697.   * Console: Hide tunnel lag if tunnel testing is disabled
  1698.   * NetDB: Fix rare NPE from netdb.jsp (ticket #539)
  1699.   * Router: Change all shutdown CRITs to ERRORs; shutdown
  1700.     the stat manager last to reduce chance of NPEs
  1701.     (similar to that in tickets #534,535)
  1702.   * SSU: Increase max concurrent outbound attempts;
  1703.     fix udp.establishRejected stat
  1704.  
  1705. 2011-10-15 zzz
  1706.   * BuildExecutor: Add tunnel.buildConfigTime stat
  1707.   * configupdate.jsp:
  1708.     - Fix setting to 'never' (ticket #523)
  1709.     - Fix always saying trusted keys changed
  1710.     - Parameterize tags
  1711.   * EepGet:
  1712.     - Add gunzip support (nonproxied only)
  1713.     - Clean up progress formatting
  1714.   * FloodfillMonitorJob: Log tweak (ticket #533)
  1715.   * I2CP: Improve error message (ticket #533)
  1716.   * JobQueue:
  1717.     - Log error when queue is out of order
  1718.     - Log tweaks
  1719.   * FloodfillPeerSelector: Fix stat NPE (tickets #534,535)
  1720.   * RouterThrottle:
  1721.     - Fix stat NPE (tickets #534,535)
  1722.     - Increase max tunnels and max delay again
  1723.   * OutNetMessagePool: Log tweak (ticket #533)
  1724.   * Router:
  1725.     - Add OOM help (ticket #533)
  1726.     - Prevent parallel shutdowns after multiple OOMs (tickets #534,535)
  1727.   * Stats: Add API methods for zero duration
  1728.   * SSLEepGet:
  1729.     - Add gunzip support
  1730.     - Increase buffer size
  1731.   * SSU: Fix concurrency errors (ticket #536)          \
  1732.  
  1733. 2011-10-13 kytv
  1734.   * Updated translations from Transifex
  1735.     - Swedish: debconf and i2psnark
  1736.     - Finnish: router console
  1737.  
  1738. * 2011-10-11 0.8.9 released
  1739.  
  1740. 2011-10-10 zzz
  1741.   * Lower max netdb RI expiration again
  1742.   * Increase default max tunnels
  1743.   * Cleanups after review
  1744.   * Exorcism (ticket #476)
  1745.  
  1746. 2011-10-07 kytv
  1747.   * GeoIP:
  1748.     - Switch to Maxmind's GeoIP service (it's better maintained
  1749.       than our old provider)
  1750.     - Update based on Maxmind GeoLite Country database from 2011-10-07
  1751.   * Translation updates from Transifex:
  1752.     - I2PSnark: de, es, and pt
  1753.     - I2PTunnel: de and es
  1754.     - RouterConsole: de and es
  1755.     - SusiDNS: de and es
  1756.     - SusiMail: de and es
  1757.  
  1758. 2011-10-07 zzz
  1759.   * Reseed:
  1760.     - Add an https reseed, thx h2ik
  1761.     - Restore ovh reseeds, thx mathiasdm
  1762.   * Tunnels:
  1763.     - For expl. tunnels, fall back to high cap sooner
  1764.     - Tweak build rejections for class N
  1765.  
  1766. 2011-10-06 kytv
  1767.   * Add diftracker.i2p to I2PSnark
  1768.  
  1769. 2011-10-06 zzz
  1770.   * RepublishLeaseSetJob:
  1771.     - Out-of-order JobQueue 3nd try to fix
  1772.     - Lower timeouts
  1773.   * Reseed:
  1774.     - Update host lists
  1775.     - Switch back to https by default
  1776.   * Throttle: Increase max message delay
  1777.   * Transport:
  1778.     - Add per-style send processing time stat
  1779.     - Increase default SSU conn limit
  1780.  
  1781. 2011-10-05 zzz
  1782.   * Streaming: Fix build
  1783.   * UDP: Catch address without key sooner
  1784.  
  1785. 2011-09-30 zzz
  1786.   * logs.jsp: Add wrapper version
  1787.   * Shitlist: Shorten time
  1788.   * Wrapper: Update armv7 to 3.5.12
  1789.  
  1790. 2011-09-30 kytv
  1791.   * fix umask bug by upgrading to wrapper v3.5.12. Binaries are from Tanuki's
  1792.     delta pack for the community edition, except:
  1793.     - Win64: not available from Tanuki--compiled with VS2010
  1794.     - FreeBSD: Tanuki's binaries are compiled in FBSD v6.  I compiled the
  1795.       wrapper in FreeBSD 7.4 to eliminate the dependency on the compat6x port.
  1796.     - Linux ARM: not available from Tanuki
  1797.     - OSX: Tanuki offers separate binaries for 32bit VS 64bit. Our
  1798.       wrapper is quad-fat supporting PPC32/PPC64 and x86/x86_64.
  1799.  
  1800. 2011-09-29 zzz
  1801.   * Bandwidth refiller: Reinitialize at restart, avoid
  1802.     issues from clock skews
  1803.  
  1804. 2011-09-27 kytv
  1805.   * Remove exotrack.i2p from i2psnark
  1806.  
  1807. 2011-09-24 zzz
  1808.   * HTTPClient: Fix error page not appearing, broken by
  1809.                 StreamForwarder change
  1810.   * HTTPServer: More mime types not to compress
  1811.  
  1812. 2011-09-23 kytv
  1813.   * Update Italian, Spanish, and Swedish translations
  1814.     from Transifex
  1815.  
  1816. 2011-09-20 zzz
  1817.   * Crypto: Comment out some main()
  1818.   * ClientMessage: Remove unused MessageReceptionInfo
  1819.   * i2psnark: File allocation cleanup to use less heap
  1820.   * i2ptunnel HTTPResponseOutputStream:
  1821.     - Use reusable gunzipper and a larger pipe for efficiency
  1822.     - Close output stream in StreamForwarder to prevent lost data,
  1823.       existing bug but made worse by larger pipe
  1824.   * I2PTunnelHTTPServer: Don't compress small responses or images
  1825.   * I2PTunnel, NTCP: Catch unchecked exceptions from GNU NIO (ticket # 519)
  1826.   * JobQueue, RepublishLeaseSetJob, StartExplorerJob:
  1827.     Out-of-order JobQueue 2nd try to fix
  1828.   * NetDB: Limit max explore queue
  1829.   * RouterContext: Remove unused MessageStateMonitor
  1830.  
  1831. 2011-09-18 kytv
  1832.  * Add OpenBSD & NetBSD to NBI and CPUID
  1833.  
  1834. 2011-09-16 zzz
  1835.   * Console: Home page flag spacing
  1836.   * EepGet: Add some new command line options
  1837.   * JobQueue:
  1838.     - Add warning to setStartAfter() as queue is no longer
  1839.       continuously sorted
  1840.     - Fix StartExplorerJob not calling requeue()
  1841.     - More pumper cleanups
  1842.   * Reseed:
  1843.     - Add HTTP proxy authorization support
  1844.     - Stub out SSL proxy support
  1845.     - Disable i2pbote reseed
  1846.   * Router: Fix router changing client-side tunnel options,
  1847.     causing original tunnel quantity to not be restored
  1848.     (ticket #513)
  1849.  
  1850. 2011-09-14 zzz
  1851.   * Console: Verify valid host/IP before saving on net config form
  1852.   * i2psnark:
  1853.     - Add refresh time option
  1854.     - Add public file permissions option (ticket #501)
  1855.     - Fix configuration of tunnel parameters (ticket #524)
  1856.     - Allow changing I2CP parameters while tunnel is open
  1857.     - Remove duplicated options in I2CP options string
  1858.     - Don't open tunnel when saving config
  1859.   * IRC DCC: Fix conn limit options
  1860.   * Router: Set permissions on router.ping file
  1861.  
  1862. 2011-09-13 kytv
  1863.   * Update i2prouter script
  1864.  
  1865. 2011-09-12 zzz
  1866.   * build.xml: Run test scripts at release time
  1867.   * Build Executor:
  1868.     - Limit max parallel builds on really slow machines (ticket #519)
  1869.     - Slow down build loop when network is apparently disconnected (ticket #519)
  1870.   * i2psnark: Fix inaccuracy in the completed bytes display
  1871.   * NetDB: Disable floodfill at shutdown time if enabled
  1872.  
  1873. 2011-09-09 zzz
  1874.   * TunnelDispatcher: Fix bug in -13 preventing participating
  1875.     tunnels from being expired and causing high CPU usage
  1876.  
  1877. 2011-09-08 zzz
  1878.   * Blocklist: Include IP in shitlist reason
  1879.   * Ministreaming: Drop old classes replaced by streaming
  1880.     years ago.
  1881.   * NTCP: Hopefully fix race NPE, thx devzero
  1882.   * Tunnels: Limit Bloom filter size based on max memory
  1883.  
  1884. 2011-09-07 zzz
  1885.   * Console: Limit max displayed participating tunnels
  1886.   * JobQueue: Change queue from a Set to a TreeSet for more efficiency
  1887.   * TunnelDispatcher: Change participant expire List to a Queue for
  1888.     efficiency and to remove global lock. Also remove separate
  1889.     time List for space savings.
  1890.  
  1891. 2011-09-06 zzz
  1892.   * Console: Move jobs.jsp rendering code from
  1893.     the router to the console
  1894.   * Crypto: Rework use of SHA256 for efficiency and
  1895.     to avoid clogging the Hash cache with one-time hashes,
  1896.     and avoiding the global cache lock.
  1897.     This also greatly increases Hash cache hit rates.
  1898.     Also use SimpleByteCache for temporary byte buffers.
  1899.   * I2PTunnel: Save keys to privkey file when enabling
  1900.     persistent key after tunnel creation (ticket #480)
  1901.   * JobQueue: Change queue from a List to a Set for efficiency
  1902.   * PrivateKeyFile: Add more constructors
  1903.   * SDSCache: Use weak refs; increase size for pub keys
  1904.  
  1905. 2011-09-04 zzz
  1906.   * NetDB:
  1907.     - Try again to fix ISJ deadlock, thx devzero
  1908.     - Lower RI expiration again
  1909.     - Expire RIs with SSU only and no introducers sooner
  1910.   * Transport: Remove one global lock in OutboundMessageRegistry.
  1911.  
  1912. 2011-09-03 zzz
  1913.   * i2psnark: Fix "eject" button in certain browsers (ticket #511)
  1914.   * UDP Inbound:
  1915.     - Hopefully fix race NPE, thx devzero
  1916.     - Catch some more fragment errors
  1917.     - Exception and log tweaks
  1918.     - Cleanups and javadocs
  1919.  
  1920. 2011-09-02 zzz
  1921.   * Console: Cache user-agent processing
  1922.   * NetDB: Hopefully fix ISJ deadlock, thx devzero
  1923.  
  1924. 2011-09-02 sponge
  1925.   * I2PSnark: Fix GUI html tag for adding a torrent, it was missing a space.
  1926.  
  1927. 2011-09-01 zzz
  1928.   * Console: Enable color logs
  1929.   * GeoIP: Cache country codes
  1930.   * NetDB: Explore more aggressively if hidden or K
  1931.   * UDP: Cleanups and introduction fixes
  1932.  
  1933. 2011-08-31 zzz
  1934.   * OCMOSJ: Remove some global cache locks, other cleanups
  1935.  
  1936. 2011-08-30 zzz
  1937.   * I2CP: Cache b32 lookups client-side
  1938.   * I2PTunnelHTTPClient: Use existing session for b32 lookups
  1939.                          rather than a new SimpleSession
  1940.   * Naming: Increase b32 lookup timeout to 15 sec.
  1941.  
  1942. 2011-08-29 zzz
  1943.   * NetDB:
  1944.     - Replace the old parallel lookup method with a true
  1945.       Kademlia lookup that iteratively queries additional floodfill
  1946.       peers returned in DatabaseSearchReplyMessages. This is a more
  1947.       efficient and reliable lookup that will work much better
  1948.       when not all floodfill peers are known, and it removes a serious
  1949.       limitation to network growth.
  1950.     - Limit max number of DSRM entries to look up
  1951.     - Cleanups, javadocs, log tweaks
  1952.   * Tunnels:
  1953.     - Increase timeouts on all deferred netdb lookups to 15s; add lookup stats
  1954.     - Cleanups, javadocs, log tweaks
  1955.  
  1956. 2011-08-28 zzz
  1957.   * checkcerts.sh: New test
  1958.   * Console: Remove 'firewalled and fast' message, just say 'firewalled'
  1959.   * I2PTunnelRunner: Fix logging
  1960.   * Log: Fix level stuck at DEBUG when using public constructor
  1961.   * OutboundMessageRegistry: Cleanups
  1962.   * Stats: Restore pre-0.8.8 API to not create a new Rate if it does not
  1963.            exist in RateStat.getRate()
  1964.   * UPnP: Lower some log levels
  1965.  
  1966. 2011-08-26 kytv
  1967.   * Debian: Bugfix: Avoid overwriting preseeded debconf values
  1968.     upon package installation (ticket #514).
  1969.   * Windows: Fix bug in fixperms.bat that occurred when installing on
  1970.     non-English versions of Windows 7 and Vista.
  1971.  
  1972. 2011-08-25 zzz
  1973.   * Blockfile:
  1974.     - Avoid NPE after corruption (ticket #515)
  1975.     - Add reverse lookup table; bump DB rev to 2
  1976.   * I2PTunnelIRCClient:
  1977.     - Big refactoring into multiple class files
  1978.     - Allow AWAY and CAP messages
  1979.     - First cut at DCC support - not for SOCKS (yet)
  1980.   * Streaming:
  1981.     - Hook I2CP ports through to I2PSocket
  1982.     - Javadocs, init cleanups, final
  1983.   * UDP:
  1984.     - Complete rewrite of OutboundMessageFragments for
  1985.       concurrent and for efficiency to avoid O(n**2) behavior
  1986.     - Don't delay in OutboundMessageFragments at the end
  1987.       of the loop if we have more to send now, this should
  1988.       speed things up
  1989.     - Queue a new send immediately after a packet is acked
  1990.     - Send session destroy message when dropping connection
  1991.     - Increase large MTU to 1492 (was 1350)
  1992.     - Cleanups, log tweaks, javadocs, final
  1993.  
  1994. * 2011-08-23 0.8.8 released
  1995.  
  1996. 2011-08-23 zzz
  1997.   * Tweaks after review
  1998.  
  1999. 2011-08-21 zzz
  2000.   * RateStat: Cleanups and javadoc fixes
  2001.   * susimail: Fix page encoding
  2002.  
  2003. 2011-08-20 zzz
  2004.   * Translations:
  2005.     - New Danish and Ukranian translations from transifex
  2006.     - Update Italian, Chinese, Spanish, Polish, Swedish,
  2007.       and Vietnamese translations from transifex
  2008.     - Update .tx/config
  2009.  
  2010. 2011-08-19 zzz
  2011.   * Soft restart:
  2012.     - Allow NTP to reinitialize clock after the comm system
  2013.       in the first minute of uptime
  2014.     - Fix i2ptunnels not restarting
  2015.     - Increase minimum forward clock shift for soft restart
  2016.     - Reduce minimum backward clock shift for soft restart
  2017.     - Signal the I2CP client with a different message when restarting
  2018.     - I2CP client reconnects when receiving restart message
  2019.  
  2020. 2011-08-17 kytv
  2021.   * Fix #506: Don't attempt to load systray4j when using a 64bit JVM
  2022.     in Windows.
  2023.  
  2024. 2011-08-16 zzz
  2025.   * Console: Tweak logs page CSS
  2026.   * Graphs: Delete corrupt rrd file (ticket #483)
  2027.   * UPnP: Fix bug causing failure when the PC has multiple interfaces
  2028.  
  2029. 2011-08-06 kytv
  2030.  * Fix #473 (wrapper.logfile set to the wrong path in Windows).
  2031.  
  2032. 2011-07-31 zzz
  2033.   * Crypto: Implement and then comment out an alternate
  2034.             AES-256/CBC implementation using the JVM crypto libs,
  2035.             and tests, it isn't faster
  2036.   * Netdb: Add a job to refresh all the old router infos at startup,
  2037.            to speed integration
  2038.  
  2039. 2011-07-30 kytv
  2040.  * Installer:
  2041.    - add libjbigi*core*jnilib, libjbigi-osx-none_64.jnilib, and
  2042.      libjbigi-linux-ppc.so
  2043.    - Add Linux PPC wrapper
  2044.  * Add linux-ppc to NBI.
  2045.  * Remove unused lock
  2046.  
  2047. 2011-07-29 zzz
  2048.   * Netdb Search:
  2049.     - Follow all DSRM's, not just the last one, by moving the code
  2050.       from the match job to the selector
  2051.     - Update peer profile after SingleSearchJob
  2052.     - Cleanups, javadocs, log tweaks, final
  2053.   * ProfileOrganizer: Tweak fast tier size
  2054.  
  2055. 2011-07-28 zzz
  2056.   * Context: Split up big lock to avoid deadlocks
  2057.   * Streaming: Avoid a rare exception on race
  2058.   * TunnelPoolManager: Reduce race window for restarting a tunnel pool
  2059.  
  2060. 2011-07-27 kytv
  2061.   * Add armel (armv5tejl) wrapper. Compiled and tested in Debian Squeeze.
  2062.  
  2063. 2011-07-26 zzz
  2064.   * Installer: The previous wrapper files only work on armv7
  2065.   * NativeBigInteger: Move libjbigi-linux-arm.so to libjbigi-linux-armv7.so,
  2066.                       do ARM version detection in NBI.
  2067.   * NetDB:
  2068.     - Explore even more aggressively at startup
  2069.     - Increase SingleSearchJob timeout
  2070.     - Increase time at startup for processing DSRM
  2071.     - Cleanups, final, javadoc, concurrent
  2072.   * OutNetMessage: Cleanups
  2073.   * Tunnels: Change another log error to a warn
  2074.   * Watchdog: Improve the way it calls for a thread dump
  2075.  
  2076. 2011-07-22 kytv
  2077.   * Add a 64bit wrapper to OSX. With 0.8.7 came a fat Mac wrapper with i386 and PPC.
  2078.     The included wrapper is now quad-fat (i386, ppc, x86_64, and ppc64).
  2079.  
  2080. 2011-07-21 zzz
  2081.   * Atalk: Remove this terrible example
  2082.   * Console: Use capability method for counting integrated peers
  2083.   * i2psnark: Don't let connection problem crash the DirMonitor (ticket #495)
  2084.   * Netdb: Speed up collection of all the floodfill peers by using
  2085.            PeerManager.getPeersByCapability()
  2086.   * PeerManager: Capability cleanups
  2087.   * Tunnel TestJob:
  2088.     - Don't continue testing after the pool is dead
  2089.     - Tweak test intervals
  2090.   * TunnelPool: Make more methods package private
  2091.  
  2092. 2011-07-18 zzz
  2093.   * FileUtil: Add a rename method and a new copy method
  2094.   * I2PTunnel: Rename privkey file when deleting tunnel to prevent inadvertent reuse
  2095.   * Netdb: Update reseed lists
  2096.   * Streaming: Improve conn limit log message
  2097.   * UDP: Lower max port below 31000 since wrapper uses that
  2098.  
  2099. 2011-07-15 zzz
  2100.   * Shutdown:
  2101.     - Cancel our JVM shutdown hook when shutting down
  2102.     - Run a spinner task so shutdown always completes
  2103.     - exit() instead of halt() so other JVM shutdown hooks run
  2104.     - Prevent duplicate wrapper notifier hooks
  2105.     - Notify the wrapper twice, once for stopping and once for stopped
  2106.  
  2107. 2011-07-13 zzz
  2108.   * Blocklist:
  2109.     - Fix delayed lookup of reason from file
  2110.     - Tag strings for translation
  2111.     - Sort IPs on configpeer.jsp correctly
  2112.   * SummaryHelper: Fix NPE at startup (ticket #493)
  2113.  
  2114. 2011-07-10 zzz
  2115.   * DH, YK:
  2116.     - Improve YK speed test
  2117.     - Shut down thread faster
  2118.     - Refiller keeps going until full
  2119.     - Cleanups
  2120.   * I2PTunnel: Fix a shutdown hang
  2121.   * Message Registry: Clear pending messages at restart / shutdown
  2122.   * OCMOSJ: Clear caches at restart
  2123.   * Router Clock: First cut at recognizing and reacting to large system
  2124.     clock shifts by partially restarting the router. Also improve
  2125.     restarts initiated from config.jsp
  2126.     Tickets #465, #468, #494
  2127.   * UPnP:
  2128.     - Wait for a while to ensure port removal at shutdown or restart
  2129.     - Fix device rediscovery and port opening after restart
  2130.  
  2131. 2011-07-08 zzz
  2132.   * Findbugs: Several fixes and cleanups
  2133.   * I2NP: Consolidate common code from TunnelBuildMessage and
  2134.           TunnelBuildReplyMessage into a common base class
  2135.   * NetDB, TestJob: Fix NPEs at startup (ticket #493)
  2136.   * Sha256Standalone:
  2137.     - Use system SHA-256 MessageDigest instead of Sha256Standalone in PRNG
  2138.     - Deprecate DataHelper functions using Sha256Standalone arguments;
  2139.       used only by Syndie
  2140.     - Note deprecation in javadocs
  2141.  
  2142. 2011-07-07 zzz
  2143.   * Blockfile:
  2144.     - Log error on out-of-order spans
  2145.     - Log error on corrupt level and discard
  2146.     - Fix SkipSpan non-flush bug causing null levels
  2147.     - Add level fixer that repairs nulls and out-of-order levels
  2148.     - Fix bug on backwards span construction, not hit in practice
  2149.     - Lots of log level changes
  2150.  
  2151. 2011-07-06 zzz
  2152.   * EepGet: Add method to add extra headers to request
  2153.   * Floodfills: Increase again
  2154.   * HTTP Proxy: Fix error on shutdown
  2155.   * NamingService: Use HostsTxtNamingService if default fails to initialize
  2156.   * Netdb: Catch exception on dup netdb entries
  2157.   * Netdb exploration:
  2158.     - Remove floodfills from dont-include list in exploration
  2159.       DatabaseLookupMessage, as the dont-include-floodfills flag
  2160.       has been supported since release 0.7.9.
  2161.       This will make exploration work better, as there is room for
  2162.       non-floodfills in the don't-include list now.
  2163.     - Reduce min and max exploration intervals
  2164.     - Explore aggressively at startup and if known routers is low
  2165.     - Explore slowly if known routers is high
  2166.   * PeerManager: Load profiles in separate thread to avoid slowing
  2167.                  down the context initAll()
  2168.   * Tunnels: Use exploratory tunnels to help maintain a minimum number
  2169.              of connected peers
  2170.  
  2171. 2011-07-03 zzz
  2172.   * AppContext: Add hasWrapper() method
  2173.   * Shutdown:
  2174.     - Clear more resources in peer manager, netdb, stat manager,
  2175.       session key manager, naming service, tunnel dispatcher,
  2176.       OCMOSJ (result of testing with jvisualvm)
  2177.     - Don't call wrapper on shutdown (starting two threads) if we
  2178.       were started with runplain
  2179.  
  2180. 2011-07-01 zzz
  2181.   * EepGet:
  2182.     - Fix error output bug
  2183.     - Output error data for 504 too
  2184.   * I2PThread: Remove logging, too many issues with extra contexts
  2185.   * Router, console, i2psnark: Change three errors to warns (tickets #479, #482, #487)
  2186.  
  2187. 2011-06-30 zzz
  2188.   * BlockfileNamingService:
  2189.     - Support readonly blockfiles
  2190.     - Open blockfile readonly if not in router context
  2191.     - Log warning if blockfile is locked
  2192.     - Set as default
  2193.   * DataHelper: Throw IOE if uncompressed data too big,
  2194.     instead of silently truncating
  2195.   * EepGet:
  2196.     - Add method to get response code
  2197.     - Add method to write error data to the output
  2198.     - Increase buffer size to 8 KB
  2199.     - Trim content type
  2200.   * IRC Server: Send a message back if the tunnel is up but the server is down
  2201.   * NewsFetcher: Change default interval to 36 hours
  2202.   * Random: Refactor refiller for concurrent
  2203.   * Shutdown:
  2204.     - Register shutdown hooks for caches, in the first step of cleaning up
  2205.       resources on shutdown, which is important in Android as the JVM
  2206.       isn't going away.
  2207.     - Clear profiles from memory on shutdown
  2208.     - Add shutdown hook for AsyncFortunaRandomSource
  2209.     - Implement and call shutdown for BandwidthRefiller
  2210.     - Implement and register shutdown hook for i2ptunnel
  2211.     - Implement and register shutdown hook for Jetty console server
  2212.     - Implement and register shutdown hook for Timestamper
  2213.     - Fix UPnP-SSDPNotifySocket thread not stopping
  2214.     - Fix all but one UDP PacketHandler threads not stopping
  2215.     - Fix i2psnark DirMonitor not stopping
  2216.     - Fix UPnP-Disposer not stopping quickly
  2217.     - Implement and call YKGenerator and DHSessionKeyBuilder shutdown
  2218.     - Implement and call shutdown for RouterWatchdog
  2219.     - Kill the global app context
  2220.     - Recognize multi-router case
  2221.     - Fix RandomIterator, YKGenerator, DHBuilder, NTCPConnection
  2222.       hanging on to old context
  2223.     - Fix DHBuilder thread not stopping
  2224.     - Stop I2PThread from starting a new App context at shutdown
  2225.     - Stop LogWriter from starting a new App context at shutdown
  2226.     - Have router kill any leftover App context at startup
  2227.     - Fix I2PThread hanging on to old context
  2228.   * Updates:
  2229.     - Add the router version to the zip file comment in the updater
  2230.     - Add a class to extract the zip file comment
  2231.     - Require the sud version header to match the zip file comment
  2232.       to prevent spoofing of the version number, since the version
  2233.       number in the header is not covered by the sud signature.
  2234.  
  2235. * 2011-06-27 0.8.7 released
  2236.  
  2237. 2011-06-26 zzz
  2238.   * Fixes after review:
  2239.     - Fix Polish po file
  2240.     - Install as a service by default on Windows again
  2241.     - Change CPUID getters to package private
  2242.     - Split new jbigi install messages into two lines
  2243.     - Test script updates
  2244.     - Javadocs
  2245.  
  2246. 2011-06-23 zzz
  2247.   * IRC: Allow outbound INVITE
  2248.  
  2249. 2011-06-21 kytv
  2250.   * Make the i2prouter script fail more gracefully if there's
  2251.     a problem loading the wrapper.
  2252.  
  2253. 2011-06-14 zzz
  2254.   * Build: New targets for including jbigi in the updater
  2255.   * Console: CSS tweak for flag box
  2256.   * i2psnark: Recognize ktorrent
  2257.   * Jbigi / NBI / wrapper / installer:
  2258.     jbigi and wrapper files for arm.
  2259.     Compiled on trimslice with gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
  2260.     Log postinstall errors to postinstall.log.
  2261.   * NetDB: Increase floodfills and better adjustment based on available memory
  2262.   * RateStat: final
  2263.   * Router: Delete old libjbigi.so and libjcpuid.so at startup if jbigi.jar is newer.
  2264.             This will force a reextraction by CPUID and NBI.
  2265.  
  2266. 2011-06-13 duck
  2267.     * Finnish, Italian, Polish and Vietnamese translations, thanks Transifex teams.
  2268.  
  2269. 2011-06-13 zzz
  2270.    * To ensure we don't release bad packages, fail the build
  2271.      if gettext fails. Change property at top of build.xml if
  2272.      you don't have gettext and want the build to continue.
  2273.  
  2274. 2011-06-12 kytv
  2275.    * Add jcpuid files (32 & 64bit) for Intel Macs
  2276.    * Compile jbigi-osx-none for Intel Macs. libjbigi-osx-none.jnilib
  2277.      is now a fat binary combining the already existing PPC
  2278.      compile and my new x86 build.
  2279.  
  2280. 2011-06-11 zzz
  2281.     * i2psnark Polish translation, thanks polacco
  2282.  
  2283. 2011-06-10 zzz
  2284.     * CPUID, NativeBigI: Add support for atom, core2, corei, nano, pentiumm, geode
  2285.     * Random: Add config setting prng.bufferSize to override the default 256 KB
  2286.     * JBigI:
  2287.       - Add new libjbigi-linux-xxx.so files built by sponge, now that we have
  2288.         CPUID.java support for them (thanks hottuna).
  2289.         See http://zzz.i2p/topics/306 for discussion and test results.
  2290.  
  2291.         64-bit processors (atom, core2, corei, nano):
  2292.         Built with GMP 5.0.2. License is LGPLv3.
  2293.         Built by sponge with GCC 4.4.4, downloaded from
  2294.         http://sponge.i2p/files/jbigi/gmp-5.0.2/
  2295.         For 64-bit processors, both performance testing and
  2296.         the GMP changelog http://gmplib.org/gmp5.0.html led us to use 5.0.2
  2297.         for both the 32- and 64-bit versions, even though the files are twice as big.
  2298.         5.0.x contains specific optimizations for atom and nano.
  2299.         All 64-bit libs have _64 appended.
  2300.  
  2301.         32-bit processors (pentiumm, geode):
  2302.         Built with GMP 4.3.2. License is LGPLv3.
  2303.         Built by sponge with GCC 4.4.4, downloaded from
  2304.         http://sponge.i2p/files/jbigi/gmp-4.3.2/
  2305.         The 4.3.2 files are half the size of those built with GMP 5.0.2, and there was
  2306.         little or no performance difference between the two versions for 32 bit processors.
  2307.     * NBI: Enable 64-bit processor detection
  2308.     * Profiles: Skip and delete a corrupt profile read from disk
  2309.  
  2310. 2011-06-10 kytv
  2311.    * jcpuid & jbigi added for 64bit Windows (only used with a 64bit jvm).
  2312.  
  2313. 2011-06-09 kytv
  2314.    * Added an x64 wrapper for Windows. This is needed because a 32bit wrapper
  2315.      cannot start a 64bit JVM.
  2316.  
  2317. 2011-06-08 zzz
  2318.     * Build:
  2319.       - Add standard manifest to jbigi.jar
  2320.       - Don't do 'mtn list changed' if not in a workspace or not needed
  2321.     * LogManager: Use DataHelper methods for loading and storing config
  2322.  
  2323. 2011-06-08 kytv
  2324.     * Update jbigi/jcpuid Windows dlls. As was done for FreeBSD and Linux, the
  2325.       libraries for 32bit CPUs were linked against gmp-4.3.2 and those for the
  2326.       64bit CPUs were linked against gmp-5.0.2.
  2327.  
  2328. 2011-06-07 kytv
  2329.     * Upgrade the wrapper to 3.5.9. Noticable changes include:
  2330.       - FreeBSD amd64 is now a supported arch along with i386. To use the wrapper
  2331.         with the most recent version of FreeBSD the port 'misc/compat6x' will need
  2332.         to be installed.
  2333.       - OSX: Both Intel and PPC Macs are supported. 32-bit support. If you'd like 64-bit
  2334.         support, please file a bug in trac with the output of "uname -m".
  2335.     * Upgrade jbigi/jcpuid for FreeBSD i386 and add support for amd64. As was done with
  2336.       the Linux compiles, 32bit compiles were linked with gmp 4.3.2 and 64 bit builds
  2337.       (as well as 32bit builds for 64bit cpus) were linked against gmp 5.0.2.
  2338.  
  2339. 2011-06-06 zzz
  2340.     * Drop andorid/ directory; further development will happen in
  2341.       an android-only branch.
  2342.  
  2343. 2011-06-05 zzz
  2344.     * Console: Tag stat descriptions at declaration rather than in Strings.java
  2345.     * Data: Remove duplicate signature verification code
  2346.             in RouterInfo and LeaseSet
  2347.     * DSAEngine: Add code for alternate implementation using Java libs;
  2348.                  disabled by default. Add test code to verify identical results
  2349.                  and compare speed.
  2350.     * JBigI:
  2351.       - Replace old non-PIC 32-bit linux libs (GMP 4.1.3 built in 2004)
  2352.         with PIC libs built with GMP 4.3.2. License is LGPLv3.
  2353.         Built by sponge with GCC 4.4.4, downloaded from
  2354.         http://sponge.i2p/files/jbigi/gmp-4.3.2/
  2355.         The 4.3.2 files are half the size of those built with GMP 5.0.2, and there was
  2356.         little or no performance difference between the two versions for 32 bit processors.
  2357.         See http://zzz.i2p/topics/306 for discussion and test results.
  2358.       - Replace old non-PIC 64-bit linux libs (GMP 4.1.4 built in 2005)
  2359.         with PIC libs built with GMP 5.0.2. License is LGPLv3.
  2360.         Built by sponge with GCC 4.4.4, downloaded from
  2361.         http://sponge.i2p/files/jbigi/gmp-5.0.2/
  2362.         For 64-bit processors, both performance testing and
  2363.         the GMP changelog led us to use 5.0.2 for both the 32- and 64-bit versions,
  2364.         even though the files are twice as big.
  2365.         See http://zzz.i2p/topics/306 for discussion and test results.
  2366.         libjbigi-linux-athlon64.so was a 64 bit file; by the new naming standard
  2367.         supported by NativeBigInteger, it is now a 32-bit file and the
  2368.         64-bit one is libjbigi-linux-athlon64_64.so.
  2369.         All new 64-bit libs will have _64 appended.
  2370.       - Remove libjbigi-windows-athlon64.dll which was a duplicate of libjbigi-windows-athlon.dll;
  2371.         NBI now tries athlon as a fallback for all 64-bit processors.
  2372.       - Update build docs
  2373.  
  2374. 2011-06-04 zzz
  2375.     * NBigI: Recognize Android
  2376.     * KeyGenerator: Restore old return type to not break ABI (thx kytv)
  2377.     * Router:
  2378.       - Add a lock for reading/writing the router.info file
  2379.       - Check our RouterInfo validity after reading and before saving,
  2380.         to catch fatal errors sooner
  2381.  
  2382. 2011-06-03 zzz
  2383.     * Android: More build updates, start working on JNI for GMP
  2384.     * Build: Fix dependency issue cause by misspelled file name
  2385.  
  2386. 2011-06-02 zzz
  2387.     * Android: Build fixes
  2388.     * Crypto:
  2389.       - HMAC Javadocs and cleanups
  2390.       - HMAC Use SimpleByteCache
  2391.     * ElGamalAESEngine: Fixups required after SessionKey enforcement
  2392.     * Reseed: Give up on a seed after 90% of fetches fail
  2393.     * SessionKey: Enforce data size and prevent reuse
  2394.  
  2395. 2011-06-02 sponge
  2396.     * Remove txt file in BOB.jar as per zzz's request.
  2397.  
  2398. 2011-06-01 zzz
  2399.     * Crypto:
  2400.       - Use java.security.MessageDigest instead of bundled GNU SHA-256 code
  2401.         if available, which it should always be.
  2402.         5 to 20% faster on Oracle JVM; 40 to 60% on Harmony;
  2403.         5 to 15% on JamVM; 20x (!) on GIJ.
  2404.       - Use java.security.MessageDigest instead of bundled Bitzi SHA-1 code
  2405.         if available on non-Oracle JVMs, which it should always be.
  2406.         Not faster on Oracle JVM; 30 to 60% faster on Harmony;
  2407.         15 to 20% on JamVM; 10-15x (!) on GIJ.
  2408.  
  2409. 2011-06-01 sponge
  2410.     * ConfigClients stopClient stubbed out.
  2411.  
  2412. 2011-06-01 sponge
  2413.     * Re the below, using better way that kytv suggested.
  2414.       There is more than one way to peel a pineapple...
  2415.  
  2416. 2011-06-01 sponge
  2417.     * Remove the one little html file that ends up in BOB.jar.
  2418.         The file is NOT a javadoc file, it is a package file.
  2419.         Still, it is zapped.
  2420.  
  2421. 2011-05-31 zzz
  2422.     * HTTP Proxy: Don't send redirect for POST (thx kytv)
  2423.     * jbigi: Add support for solaris
  2424.  
  2425. 2011-05-30 zzz
  2426.     * I2CP:
  2427.       - Append I2CP Version information to the Get/Set Date Messages,
  2428.         so that both the router and client are aware of the other side's version,
  2429.         and future protocol changes will be easier to implement.
  2430.         Previously, router version information was not available to the client,
  2431.         so when router and client were in different JVMs,
  2432.         old clients would work with new routers
  2433.         but new clients would not work with old routers.
  2434.         After this change, we can design future changes so that new clients
  2435.         will work with old routers.
  2436.         This is an enhancement to the old protocol version byte sent by the client,
  2437.         which we have never changed and probably never will.
  2438.       - Prevent a client from setting the router's clock
  2439.       - Javadocs
  2440.     * i2psnark: Restrict swarm size for small torrents
  2441.     * netDb: Don't refetch expiring router infos if we have enough
  2442.  
  2443. 2011-05-28 zzz
  2444.     * i2psnark: Fix bug preventing Robert from connecting to snark (thx sponge)
  2445.  
  2446. 2011-05-27 zzz
  2447.     * Console: Fix router.updateThroughProxy being set to false after saving
  2448.                change on /configupdate when install dir is read-only.
  2449.                (ticket #466)
  2450.     * EepGet:
  2451.       - Fix redirect loop (thx kytv)
  2452.       - Reset redirect counter when retrying
  2453.     * JBigI:
  2454.       - Refactor to handle 64 bit libs and a list of fallback libs
  2455.       - Logging tweaks
  2456.       - Only check for one file name in library path
  2457.     * CPUID:
  2458.       - Recognize amd64 as x86
  2459.       - Only check for one file name in library path
  2460.  
  2461. 2011-05-25 zzz
  2462.     * CPUID: Load 64-bit libcpuid if available
  2463.     * HTTP Proxy: Address helper refactoring, address book add form
  2464.     * JBigI:
  2465.       - Start updating NativeBigInteger
  2466.       - Remove k63 libs that are dup of k62; handle in NBI
  2467.     * Naming: B32 fixes
  2468.     * NetDB: Increase floodfills again
  2469.  
  2470. 2011-05-23 zzz
  2471.     * Console:
  2472.       - Disable zh translation in graphs on windows due to font issues
  2473.       - Force news refetch after URL change
  2474.       - Fix NPE at startup
  2475.       - Graph tweaks
  2476.  
  2477. 2011-05-23 sponge
  2478.     * mbuild.sh fixups
  2479.     * add new jcpuid/mbuild.sh -- pedantic naming
  2480.     * jbigi/mbuild-all.sh -- pedantic naming
  2481.     * see also http://zzz.i2p/topics/306?page=1#p3341
  2482.  
  2483. 2011-05-22 zzz
  2484.     * GeoIP: Read countries.txt in UTF-8
  2485.     * Jetty: Fix build error that omitted local jetty patches from org.mortbay.jetty.jar;
  2486.              affected 0.8.4 and 0.8.6 installers. Include jar in the updater for the next release.
  2487.  
  2488. 2011-05-21 sponge
  2489.     * mbuild.sh document and fixes
  2490.     * mbuild-all.sh add cpu types
  2491.  
  2492. 2011-05-20 zzz
  2493.     * Certificate: Fix creation bug; improve router cert generation
  2494.     * DataHelper:
  2495.       - Undeprecate fromProperties() and toProperties()
  2496.       - Undeprecate BOOLEAN_FALSE and BOOLEAN_TRUE
  2497.       - Fix fromProperties() and toProperties() to correctly throw DataFormatExceptions
  2498.       - Add sort option
  2499.       - Efficiency improvements in writeProperties(), toProperties(), storeProps(), and toString()
  2500.       - Fix encoding issues (ticket #436)
  2501.     * i2ptunnel: Fix server-side stripping of X-Accept-encoding
  2502.     * Jbigi / JCPUID:
  2503.       - Remove nativeDoubleValue(), update jbigi README
  2504.       - Unbundle jbigi.jar, create at build time
  2505.       - Add support for new Intel family/model names.
  2506.       - Add proper support for using Core2 machines as P4.
  2507.       - Add support for identifying SSE 3/4.1/4.2/4A support on CPU.
  2508.       - Rewrite cpuid.c so it builds with PIC (source only, binary not updated yet)
  2509.     * LogManager: Try to prevent out-of-order logging at shutdown
  2510.     * Naming Services, Addressbook, and SusiDNS:
  2511.       - Add new API for Naming Services to support modifications
  2512.       - Redesign HostsTxt NS as an interface to three
  2513.         SingleFile NSs, one for each text file
  2514.       - Add locking to SingleFile NS
  2515.       - Redesign SusiDNS and addressbook to interface to the API
  2516.         instead of accessing files directly
  2517.       - SusiDNS requests addressbook update via the NS API
  2518.       - Redesign addressbook to reduce memory usage when processing subscriptions
  2519.       - Redesign SusiDNS to use much less memory by not loading in the whole
  2520.         addressbook where possible
  2521.       - Add new Blockfile NS for an on-disk database of hosts
  2522.         Based on the BlockFile database:
  2523.         http://www.metanotion.net/software/sandbox/block.html
  2524.         with substantial enhancements to lower memory usage
  2525.         and improve exception handling
  2526.       - Remove old unused AddressDB NS, FilesystemAddress NS, and PetName NS.
  2527.       - Restructure Dummy NS and Meta NS
  2528.       - Redesign NS caching to use an LRU map
  2529.       - SusiDNS checks for invalid host names
  2530.       - SusiDNS IDN conversion and better support for non-ASCII host names
  2531.       - Add b32 links in SusiDNS
  2532.       - HTML fixes and cleanups in SusiDNS
  2533.       - SusiDNS message and tagging cleanups
  2534.       - SusiDNS new details page
  2535.     * Stats and Graphs:
  2536.       - Update to JRobin 1.5.9.1
  2537.       - Major rework required for 1.5.9 API
  2538.       - Disable graphs in JVMs that crash with 1.5.9 (gij, JamVM, Harmony)
  2539.       - Make graph data persistent (3 month RRD on disk),
  2540.         with option to disable
  2541.       - Improve error handling
  2542.       - Disable graph page refresh when appropriate
  2543.       - Fix HTML errors
  2544.       - Add restart marker on graphs
  2545.       - Restore zh text on graphs
  2546.       - Improve form save messages
  2547.       - Add expires directive to graphs
  2548.       - Refactor handling of required stats
  2549.       - Clean up / shorten description for required stats
  2550.       - Change bw.sendBps and bw.receiveBps from KBps to Bps
  2551.  
  2552. * 2011-05-16  0.8.6 released
  2553.  
  2554. 2011-05-13 zzz
  2555.     * Increase min floodfills; decrease min routerinfo expiration
  2556.  
  2557. 2011-05-11 zzz
  2558.     * Use partitions of fast tier for various hops of client tunnels
  2559.  
  2560. 2011-05-06 zzz
  2561.     * Tunnels and profiles:
  2562.       - Increase max fast and high-cap tier sizes
  2563.       - Slow profile eval cycle after sufficient uptime
  2564.       - Fix bug which started a new build after a successful build
  2565.       - Misc. cleanups
  2566.  
  2567. 2011-04-28 zzz
  2568.     * Console: Try to prevent cascaded IllegalStateExceptions in .jsp code;
  2569.       add logging for original error
  2570.     * peers.jsp: Tag UPnP strings
  2571.     * UPnP: Strip trailing nulls from incoming XML to prevent
  2572.       "content not allowed in trailing section" exceptions
  2573.  
  2574. * 2011-04-18  0.8.5 released
  2575.  
  2576. 2011-04-11 zzz
  2577.     * Console: Hide iframe on mobile browsers
  2578.     * DataHelper: Speed up eq() (Ticket #437)
  2579.     * HTTPServer: Strip inbound X-Accept-Encoding header
  2580.     * netdb.jsp: HTML fixes
  2581.     * Plugins: Log error when console server not found
  2582.     * Reseed: Log tweak
  2583.  
  2584. 2011-04-02 m1xxy
  2585.     * routerconsole, i2psnark, ...  I2P ahora tambi├⌐n en espa├▒ol: ┬íBienvenidos los hispanohablantes!
  2586.       - routerconsole, i2ptunnel, i2psnark, SusiDNS, Susimail fully translated into Spanish
  2587.         (thx to PunkiBastardo and user)
  2588.     * routerconsole, i2psnark, ...
  2589.       - French translations completed by magma
  2590.  
  2591. 2011-03-22 zzz
  2592.     * Handle GNU JRE returning Long.MAX_VALUE for max memory
  2593.     * i2ptunnel: HTML fixes
  2594.  
  2595. 2011-03-20 zzz
  2596.     * Console: Remove cache directives
  2597.     * i2psnark: Fix peers stuck at uninteresting after metainfo fetch
  2598.     * i2ptunnel: Change all clients to 3 hops by default (new installs only)
  2599.     * Profiles:
  2600.       - Nicer profile dump
  2601.       - More efficient profile lookup for display
  2602.       - Fix dumpprofile NPE
  2603.       - Change file suffix from .dat to .txt.gz
  2604.       - Set firstHeardAbout on creation
  2605.     * Rate: Fix equals()
  2606.     * Recognize links and links2 as text browsers
  2607.  
  2608. 2011-03-12 zzz
  2609.     * Blocklist: Add bogons since they won't change any more
  2610.     * BuildHandler: Loop double-check
  2611.     * Console:
  2612.       - Fix HTML errors in form message box,
  2613.         logs.jsp, netdb.jsp, profiles.jsp, stats.jsp,
  2614.         configpeer.jsp, configtunnels.jsp, configupdate.jsp
  2615.       - ngettext cleanups
  2616.     * LogWriter: Prevent NPE after permissions fail
  2617.  
  2618. 2011-03-11 duck
  2619.     * Susimail: translation support, including dutch translation.
  2620.  
  2621. 2011-03-10 zzz
  2622.     * configclients.jsp: Split form up, fix HTML warnings
  2623.     * configui.jsp: Fix lang setting broken by previous nonce change
  2624.     * Console: Consolidate nonce handling
  2625.     * eepget: Don't send X-Accept-Encoding header to proxy (ticket #422)
  2626.     * logs.jsp: Fix NPE (ticket #430)
  2627.     * netdb.jsp: Fix table alignment
  2628.     * Tunnel Preprocessor: Use entropy for padding more efficiently
  2629.  
  2630. 2011-03-08 zzz
  2631.     * Clock: Cleanups and javadocs
  2632.     * Console:
  2633.       - Parameterize download button tags (ticket #425)
  2634.       - Clean up summary bar HTML warnings
  2635.       - Just display a summary bar link for text browsers
  2636.       - Move welcome div from the readme files to index.jsp
  2637.       - Require a nonce to change language
  2638.     * EepGet: Cleanups and javadocs
  2639.     * i2psnark:
  2640.       - More efficient metainfo handling, reduce instantiations
  2641.       - Improved handling of storage errors
  2642.       - Improved handling of duplicate file names
  2643.       - More metainfo sanity checks
  2644.       - Metadata transfer error handling improvements
  2645.       - Code cleanup, remove dead and duplicated code
  2646.     * Reseed: Use the reseeder as a clock source
  2647.  
  2648. 2011-03-02 zzz
  2649.     * BuildHandler:
  2650.       - Limit request queue size
  2651.       - Concurrent request queue
  2652.       - Remove dead code for queued reply handling
  2653.     * OutNetMessage: Remove dead code
  2654.     * Tunnel cleanups, final, javadoc
  2655.  
  2656. * 2011-03-02  0.8.4 released
  2657.  
  2658. 2011-02-27 zzz
  2659.     * Console:
  2660.       - Fix numerous readme HTML errors
  2661.       - Fix flag locations in readmes
  2662.       - desktopgui.enable now defaults to false; run systray if false
  2663.       - Start icon app before console
  2664.       - Restore systray form in configservice.jsp
  2665.       - Only save lang when clicking on flags if desktopgui is running
  2666.       - Only allow two-letter lang code from cgi parameter
  2667.     * Reseed: Disable HTTPS until we have enough working hosts again
  2668.  
  2669. 2011-02-24 zzz
  2670.     * i2psnark:
  2671.       - Fix delete and remove buttons for Opera and w3m
  2672.       - Stop torrent if no valid trackers
  2673.       - Fix war build dependencies
  2674.  
  2675. 2011-02-23 zzz
  2676.     * BuildHandler:
  2677.       - Lower participating throttler max limit
  2678.       - Cleanups and loop checks
  2679.     * Console: Fix summary bar HTML error
  2680.  
  2681. 2011-02-22 zzz
  2682.     * BuildHandler: Prelmiinary participating tunnel throttler
  2683.     * I2PTunnel:
  2684.       - Add spellcheck=false to textareas
  2685.       - Fix HTML error in 503 error page
  2686.  
  2687. 2011-02-19 zzz
  2688.     * I2PTunnel: Fix standalone server tunnels
  2689.                  http://forum.i2p/viewtopic.php?t=5376
  2690.     * Plugins: Fix signature verification if router.config specifies
  2691.                trustedUpdateKeys (ticket #416)
  2692.  
  2693. 2011-02-18 Mathiasdm
  2694.     * Desktopgui now has an option to be disabled (desktopgui.enabled)
  2695.  
  2696. 2011-02-17 zzz
  2697.     * Build:
  2698.       - Add includeAntRuntime=false to all javac targets
  2699.       - Add build date, mtn rev, and changed file list to all manifests
  2700.       - Add unless=uptodate to all jar and war targets
  2701.         (bob and dtg still todo)
  2702.     * Console: Add Arabic
  2703.     * i2ptunnel: outproxy2 -> outproxyng (Ticket #394 take 2)
  2704.  
  2705. 2011-02-15 zzz
  2706.     * i2psnark: Details link shuffle, mostly restore 0.8.3 behavior
  2707.     * Profiles: Punish rejections more, in an attempt to spread the
  2708.                 load more through the network
  2709.     * Timers: Log cleanup
  2710.  
  2711. 2011-02-14 Mathiasdm
  2712.     * Fix headless issue without reboot
  2713.  
  2714. 2011-02-13 zzz
  2715.     * Connect Client: Minor NPE fix cleanup
  2716.     * JobQueue: Prevent NPE at shutdown (thanks liberty)
  2717.     * GeoIP: Prevent startup NPE (ticket #413, thanks RN)
  2718.     * NetDB: Prevent ExpireLeaseJob NPE (thanks sponge)
  2719.  
  2720. 2011-02-11 Mathiasdm
  2721.     * routerconsole: fixed graphs using jrobin; and headless issue
  2722.           in general: no more switches between headless and non-headless.
  2723.  
  2724. 2011-02-11 sponge
  2725.     * I2PTunnel: fix NPE in I2PTunnelConnectClient
  2726.  
  2727. 2011-02-10 sponge
  2728.     * I2CP: fix NPE in QueuedClientConnectionRunner
  2729.  
  2730. 2011-02-10 zzz
  2731.     * I2CP: Correctly close internal connections on the router side
  2732.             when closed by the client, was causing massive memory leak
  2733.             for internal clients using lots of sessions (thanks sponge)
  2734.             (ticket #397)
  2735.     * i2psnark:
  2736.       - Improved magnet link parsing, use tr parameter if present
  2737.     * i2ptunnel: Change shared clients default for new clients to false
  2738.     * Streaming: Don't use iter.remove() on a COWAS
  2739.  
  2740. 2011-02-09 sponge
  2741.     * BOB: fixup delivery in config, adds config file versioning.
  2742.     * I2CP: Fix most of the I2CP leaks. Two leaks remain, but they are small.
  2743.             net.i2p.internal.QueuedI2CPMessageReader and
  2744.             net.i2p.router.client.I2CPMessageQueueImpl
  2745.             are the two remaining leaks.
  2746.  
  2747. 2011-02-07 zzz
  2748.     * i2psnark:
  2749.       - Check for dup magnet torrent when adding torrent file
  2750.       - Add exotrack.i2p (ticket #403)
  2751.       - Disable spellcheck in textarea
  2752.     * i2ptunnel: Generate error message when i2ptunnel.config save fails
  2753.                  (ticket #404)
  2754.  
  2755. 2011-02-06 zzz
  2756.     * i2psnark: Fix maggot links, and magnet links with trailing parameters (thx user)
  2757.  
  2758. 2011-02-05 zzz
  2759.     * .mtn-ignore: New, to make it harder to check in stuff you shouldn't
  2760.     * BOB: Drop checked-in build dir
  2761.     * i2psnark:
  2762.       - Big refactor to support torrents where only the infohash is known
  2763.         (i.e., added by magnet links)
  2764.       - Big refactor to use accessors instead of public fields
  2765.       - Add support for metadata transfer (BEP 9) via the
  2766.         extension protocol (BEP 10)
  2767.       - Add support for adding torrents via standard magnet links (BEP 9)
  2768.         and "maggot" links (http://sponge.i2p/files/maggotspec.txt)
  2769.       - Add support for peer exchange (i2p_pex)
  2770.       - Add stubs for future DHT support (BEP 5)
  2771.       - Add more information on torrent details page;
  2772.         add details page for single-file torrents
  2773.       - Make filename filtering consistent (ticket #368)
  2774.       - Fix add-torrent locking (ticket #371)
  2775.       - Fix opentracker configuration
  2776.       - Add several connect-to-self checks
  2777.       - Add support for using new I2CP bandwidth limiter
  2778.       - Add support for using new in-session I2CP naming lookups
  2779.       - Don't expire outbound Piece messages, since we now defer loading the
  2780.         data from disk
  2781.     * i2ptunnel:
  2782.       - Change connect proxy default to outproxy2.h2ik.i2p (ticket #394)
  2783.       - IRCClient: Use tunnel log instance
  2784.       - Server: Full queue log tweak
  2785.  
  2786. 2011-02-03 zzz
  2787.     * Build:
  2788.       - Remove dup flag files (ticket #316)
  2789.       - Remove BOB dependency on i2ptunnel
  2790.     * Console: Add DTG to classpath for old installs
  2791.     * I2PTunnel: Fix NPE
  2792.     * RandomSource: Fix seeding from /dev/urandom
  2793.     * Reseed: Limit time spent downloading from a single source
  2794.  
  2795. 2011-02-02 sponge
  2796.     * BOB: Revise lookup code, bump BOB version
  2797.  
  2798. 2011-01-31 zzz
  2799.     * Console: Put all socket handlers in same thread pool,
  2800.                set min/max threads and idle timeout
  2801.     * Context: Fix properties init
  2802.     * DataStructures:
  2803.       - Cleanups
  2804.     * DecayingBloomFilter, DecayingHashSet: Cleanups and speedups
  2805.     * Findbugs: Lots of cleanups
  2806.     * I2CP:
  2807.       - Add experimental bandwidth limiter
  2808.       - Add I2PSession API method to update tunnel and bandwidth
  2809.         configuration on an existing session
  2810.       - Filter more system properties before passing them to the router
  2811.       - Start work on passing per-message flags to the router via I2CP
  2812.     * I2PAppContext: New getProperties() method
  2813.     * i2ptunnel:
  2814.       - Use context properties as defaults
  2815.     * NetDB, DatabaseStoreMessage:
  2816.       - Convert everything from DataStructure to the
  2817.         new DatabaseEntry superclass
  2818.       - Optimizations made possible by DatabaseEntry
  2819.       - Don't rescan netDb directory unless changed
  2820.     * OCMOSJ:
  2821.       - Don't send expired messages
  2822.       - Clean up stat init
  2823.     * PeerManager: Make calculators static, take out of router context
  2824.     * Router:
  2825.       - Add new RandomIterator, use in UDP, peer selector,
  2826.         profile organizer
  2827.       - Add a stat to monitor peer selector run time
  2828.     * RouterContext: Clean up clock overrides
  2829.     * Streaming:
  2830.       - Add new real sockets for easier porting of apps.
  2831.         See http://zzz.i2p/topics/792 for info. Untested.
  2832.       - Case cleanups
  2833.       - Javadoc
  2834.  
  2835. * 2011-01-24  0.8.3 released
  2836.  
  2837. 2011-01-16 zzz
  2838.     * Console: Allow editing of console args
  2839.     * UDP: Prevent rare startup NPE
  2840.     * UPnP:
  2841.       - Change all log errors to warns (tickets #76, #95, #120)
  2842.       - Double socket soTimeout to 2 seconds
  2843.  
  2844. 2011-01-15 zzz
  2845.     * Console: Add some HTTP headers in the view servlets
  2846.  
  2847. 2011-01-12 zzz
  2848.     * Log: Fix rare initialization problem
  2849.     * PrivateKey: Fix hashCode()
  2850.  
  2851. 2011-01-09 zzz
  2852.     * DataHelper: Speed up and annotate sortStructures()
  2853.     * Data Structures: More caching improvements, don't cache where we shouldn't
  2854.     * NetDB: Don't rescan netDb directory unless changed,
  2855.              to reduce Hash cache thrash (backport from test4)
  2856.     * RouterInfo:
  2857.       - Don't cache byteified data by default, to save ~1.5 MB
  2858.       - Don't create empty peers Set, to save ~100KB
  2859.  
  2860. 2011-01-07 zzz
  2861.     * Data Structures: More caching
  2862.     * i2psnark: Improve request tracking to reduce memory usage
  2863.  
  2864. 2011-01-05 zzz
  2865.     * build.xml: Fix findbugs target
  2866.     * Fix some miscellaneous findbugs bugs
  2867.     * i2psnark: Refactor request tracking to prevent possible deadlocks
  2868.     * OCMOSJ: Fix cache bug
  2869.     * TrustedUpdate: Fix key store bug
  2870.  
  2871. 2011-01-02 zzz
  2872.     * Console: Disable spellcheck in textareas
  2873.     * Data Structures: More tweaks
  2874.     * I2CP: Fix BWLimits Message reply in standard session
  2875.  
  2876. 2010-12-31 zzz
  2877.     * Console:
  2878.       - Make themes and history.txt return 403 on error,
  2879.         not 500, to avoid the new error page
  2880.       - Add logging, enable with routerconsole.log=filename
  2881.       - Link to full history.txt on help page
  2882.     * Data Structures: Caching cleanups
  2883.     * Datagram Dissector: Fix RuntimeException caused by reuse,
  2884.                           preventing iMule from connecting on UDP
  2885.                           (thanks devzero)
  2886.     * i2psnark:
  2887.       - Send cache directive for in-war icons
  2888.     * OCMOSJ: Refactor cache keys for efficiency
  2889.  
  2890. 2010-12-30 zzz
  2891.     * Data Structures:
  2892.       - New SDSCache for SimpleDataStructures
  2893.       - New SimpleByteCache for byte[]
  2894.       - Cache Hash, PublicKey, and SigningPublicKey
  2895.       - Remove global lock in ByteCache
  2896.     * I2CP: Missing piece of parallel naming lookup
  2897.     * i2psnark: Fix buttons on Firefox 4.0b
  2898.     * i2ptunnel:
  2899.       - Use dropdown box to select interface for clients
  2900.       - Warn on index page if required fields not set
  2901.  
  2902. 2010-12-29 zzz
  2903.     * Console: Add 500 error page
  2904.     * DSAEngine: Restore variants of methods using a Hash argument,
  2905.                  required by Syndie, removed in 0.8.1
  2906.     * Reseed:
  2907.       - Add new configreseed page
  2908.       - Add StartCom CA cert required for www.i2pbote.net
  2909.  
  2910. 2010-12-27 zzz
  2911.     * Crypto: Cleanups and fixups
  2912.     * Console:
  2913.       - Add SSL support - To enable, change clients.config. Examples:
  2914.           ## Change to SSL only: just add a '-s'
  2915.           clientApp.0.args=-s 7657 ::1,127.0.0.1 ./webapps/
  2916.           ## Use both non-SSL and SSL: add '-s port interface'
  2917.           clientApp.0.args=7657 ::1,127.0.0.1 -s 7667 ::1,127.0.0.1 ./webapps/
  2918.           ## ...and change URLLauncher args further down for the browser to open https:// at startup if you like.
  2919.       - Add a simple history.txt servlet
  2920.       - Add form for I2CP options on configclients.jsp
  2921.     * Context:
  2922.       - Add hook for internal I2CP
  2923.       - Change temp file random to Base64 http://zzz.i2p/topics/804
  2924.     * Data structure caching:
  2925.       - Use a single static null certificate in place of
  2926.         tens of thousands of them
  2927.     * graphs.jsp: Form tweaks, fix setting delay to 'Never'
  2928.     * I2CP:
  2929.       - Change from the internal pseudo-socket that was
  2930.         implemented in 0.7.9 to an internal Queue that directly
  2931.         passes I2CPMessage objects. For in-JVM clients,
  2932.         this eliminates two writer threads per client and
  2933.         avoids the serialization/deserialization of I2CP messages.
  2934.       - New option i2cp.disableInterface to turn off external I2CP port
  2935.         (7654) and allow internal clients only
  2936.       - I2CP over SSL, enable with i2cp.SSL=true
  2937.       - Bypass authorization for internal accesses
  2938.       - Move BWLimits and DestLookup message support from
  2939.         I2PSimpleSession to I2PSessionImpl
  2940.       - Include the Hash in the DestReplyMessage on a failed lookup
  2941.         so the client may correlate replies
  2942.       - Add support for parallel lookups and BWLimits requests
  2943.       - Add support for specifying the timeout for DestLookups
  2944.         (can only be smaller than the router timeout for now)
  2945.       - Extend dest lookup router timeout from 10s to 15s
  2946.     * i2psnark:
  2947.       - Backport TrackerClient NPE fix
  2948.       - Fix last piece length calculation for torrents > 2GB (ticket #361)
  2949.     * i2ptunnel:
  2950.       - Get Log from the logManager instead of instantiating,
  2951.         so we may adjust the levels on the fly
  2952.       - Better logging of server errors
  2953.       - Return 503 to client before closing i2p socket if server is not there
  2954.       - Extend header timeouts for HTTP and IRC server tunnels
  2955.       - Limit server blockingHandle threads
  2956.       - Run standard server blockingHandles inline
  2957.       - For clients, use a common thread pool that expires idle threads
  2958.         rather than keeping 5 accept() threads for each client.
  2959.       - Use pool for HTTP decompression also.
  2960.       - Disable router host/port options when in router context
  2961.       - Add blacklist, connection limit, and jump list options to edit form
  2962.     * Pack200: Find and use either Oracle or Apache library at runtime;
  2963.                neither required at compile time.
  2964.     * Router: Convert 'mark router liveliness' thread to SimpleScheduler
  2965.     * Stats: Change stat.full default to false
  2966.     * Threads:
  2967.       - Reduce thread pool sizes based on memory and/or bandwidth limits
  2968.       - Tweak some thread names for clarity
  2969.     * Update:
  2970.       - Change the UpdateHandler to try all sources in a loop, rather than one,
  2971.         so the user need not retry manually
  2972.       - For each source, fetch the first 56 bytes and check the version
  2973.         before downloading the whole thing, so we need not wait for every
  2974.         host to have the latest before updating the news.
  2975.  
  2976. 2010-12-26 sponge
  2977.     * URI resource fixes from pre-review time from upstream prior merge
  2978.     * Evolve URI fixs another step.
  2979.     * Document how the URI path fix works.
  2980.     * Fix 302 redirects so they URL encode properly.
  2981.     * bump to -1
  2982.  
  2983. * 2010-12-22  0.8.2 released
  2984.  
  2985. 2010-12-13 dr|z3d
  2986.     * Console themes: Midnight & Classic renovations.
  2987.  
  2988. 2010-12-12 zzz
  2989.     * i2psnark:
  2990.       - Fix end-game deadlock
  2991.       - Fix last-modified check for multifile torrents, causing
  2992.         apparent loss of data after abnormal exit
  2993.       - Tweaks
  2994.  
  2995. 2010-12-11 zzz
  2996.     * Build: Fix 'ant distclean poupdate' again
  2997.     * I2CP: Change a log error to a warning (ticket #353)
  2998.     * i2psnark:
  2999.       - Restore text (ticket #273)
  3000.       - Fix several HTML errors (ticket #273)
  3001.       - Fix HTML error causing info links to be unclickable in dillo (tiicket #273)
  3002.       - Fix alt text duplicated or looking bad in text browsers (ticket #273)
  3003.       - Fix Opera button errors (ticket #332)
  3004.       - Fix POST resubmission errors (ticket #334)
  3005.       - Catch FetchAndAdd copy error (ticket #352)
  3006.       - Set permissions on downloaded torrent files
  3007.       - Hide some columns when not running
  3008.       - Lots of spacing cleanups
  3009.       - Rename images so users don't end up with unused files
  3010.       - Remove ~15 unused images
  3011.       - Clean up theme selection speed-coding exercise
  3012.       - Indent fixes
  3013.     * Log: Don't double-timestamp CRITS in wrapper.log
  3014.     * News: XML fixes (ticket #350)
  3015.     * Plugins: Better handling of signing keys (Ticket #351)
  3016.     * TunnelPoolManager: Fix rare startup NPE (http://forum.i2p/viewtopic.php?t=5192)
  3017.  
  3018. 2010-12-10 Mathiasdm
  3019.     * I2PTunnel: Fixed up security fix.
  3020.  
  3021. 2010-12-07 Mathiasdm
  3022.     * I2PTunnel: Security fix: change server reply
  3023.       to return 'I2PServer' instead of the actual servername.
  3024.  
  3025. 2010-12-06 dr|z3d
  3026.     * I2PSnark:
  3027.       - Resolve table header wrapping issue.
  3028.       - Vanilla/Ubergine theme enhancements.
  3029.  
  3030. 2010-12-05 zzz
  3031.     * DataHelper: Have readLong() and readString() throw an
  3032.       EOFException instead of a DataFormatException on EOF,
  3033.       which should lower the log severity in I2CP and I2NP
  3034.       when a client or peer disconnects.
  3035.  
  3036. 2010-12-02 zzz
  3037.     * Console: Format console refresh time
  3038.     * I2NP: Allow message to be written more than once,
  3039.             instead of throwing an IllegalStateException
  3040.     * i2psnark: Fix extension messages
  3041.     * Streaming: Restore I2PSocketManagerFull as public
  3042.                  (broke jwebcahe ticket #345)
  3043.     * Transport: Hamachi address block 5/8 assigned by IANA
  3044.  
  3045. 2010-12-01 dr|z3d
  3046.     * Console:
  3047.       - Extensive reworking of ieshim.css for classic theme/Internet Explorer.
  3048.       - Additional console_big.css files for other themes to enhance doublebyte glyph support.
  3049.     * I2PSnark:
  3050.       - Make show/hide peers and stop/start all torrent buttons more obvious.
  3051.       - Rework Vanilla icons to bring in line with color scheme.
  3052.  
  3053. 2010-11-30 zzz
  3054.     * I2CP: Try to hide Pipe closed messages (several tickets)
  3055.     * i2psnark: Move PeerCheckerTask from Timer to SimpleTimer2
  3056.                 to save some threads
  3057.     * Logging:
  3058.       - Limit buffer size; block and wakeup writer when full
  3059.       - Limit errors written to system log
  3060.       - Add method to force a log below the current level
  3061.       - Try to fix log flushing error
  3062.     * Streaming: Change some logged errors to warnings
  3063.                  (tickets 76, 341 and others)
  3064.  
  3065. 2010-11-29 dr|z3d
  3066.     * Updated console theme "light".
  3067.  
  3068. 2010-11-29 zzz
  3069.     * i2psnark:
  3070.       - Don't timeout queued piece messages
  3071.     * Logging:
  3072.       - Use System locale and time zone for default date/time format,
  3073.         so it matches the wrapper log time (we can't set the wrapper log time zone).
  3074.         (existing installs must remove logger.dateFormat line
  3075.          in logger.config to get system default format)
  3076.       - Force RuntimeExceptions to CRIT level
  3077.       - Don't have log() count buffer size
  3078.     * Streaming: Make all classes outside the API package private
  3079.     * UDP:
  3080.       - Fix bug causing PacketPusher to loop quickly instead of sleeping
  3081.       - Fix udp.sendCycleTime stat
  3082.       - Fix speed values on peers.jsp
  3083.       - Try to fix rare NPE (ticket 298)
  3084.  
  3085. 2010-11-28 zzz
  3086.     * Build: Move all dependencies to top-level build.xml,
  3087.              so each sub-build.xml is only executed once
  3088.     * i2psnark:
  3089.       - Fix NPE and other partials bugs
  3090.       - More extension message stubbing
  3091.       - Log tweaks
  3092.     * I2PTunnel: Deprecate destFromName()
  3093.  
  3094. 2010-11-27 zzz
  3095.     * Build:
  3096.       - Add man pages to package
  3097.       - New updaterWithJavadoc target
  3098.     * configstats.jsp: Fix NPE
  3099.     * Console:
  3100.       - Linkify "plugin installed and started" message
  3101.       - Add link to javadocs if installed
  3102.     * i2psnark:
  3103.       - Drop queued outbound requests when choked
  3104.       - Redo some data structures and locking to hopefully prevent deadlock
  3105.       - Memory reduction part 3: Return partial pieces to PeerCoordinator when choked
  3106.     * Streaming: Fix race NPE at stream close
  3107.  
  3108. 2010-11-27 dr|z3d
  3109.    * I2PSnark: New alternative theme: "Vanilla".
  3110.    * Big thanks to sponge for implementing the theme changer!
  3111.  
  3112. 2010-11-27 sponge
  3113.    * Plugin: ticket 336 fix NPE
  3114.  
  3115. 2010-11-27 sponge
  3116.    * Slackware: bump i2p-base version, so that it can be upgraded with the new
  3117.     base code fixes.
  3118.  
  3119. 2010-11-26 sponge
  3120.    * i2psnark: Don't save theme parameter if it has not changed.
  3121.  
  3122. 2010-11-26 sponge
  3123.    * i2psnark: Add theme change and theme selection storage abilities.
  3124.  
  3125. 2010-11-26 zzz
  3126.     * Console: Split initialNews.xml into a file for each language
  3127.                don't copy to config dir at install.
  3128.     * i2psnark: Clean up and enhance the PeerCoordinator's partial piece handling,
  3129.                 in preparation for more improvements
  3130.     * LogManager: When not in router context, delay creating log file until required
  3131.     * NetDb: Lower RouterInfo expiration time again
  3132.     * Router: Prevent NCDFE after unzipping update file
  3133.     * Transports: Round time to prevent clock bias, also adjust for RTT in UDP
  3134.  
  3135. 2010-11-26 dr|z3d
  3136.     * Readme: Overhaul (English) layout and text.
  3137.  
  3138. 2010-11-25 dr|z3d
  3139.     * Console themes: Classic and Dark theme refresh.
  3140.     * Fix langbox overflow issue in all themes.
  3141.  
  3142. 2010-11-24 zzz
  3143.     * configui: Add .pt
  3144.     * configtunnels: Log cleanup
  3145.     * graphs: Synch to conserve memory; cleanup
  3146.     * i2psnark:
  3147.       - Prevent dup requests during end game
  3148.         (ticket 331 - thanks sponge and Oct!)
  3149.       - POST parameter tweaks
  3150.       - Message cleanup
  3151.     * logs: Add trac login hint
  3152.     * Router:
  3153.       - Save some info to config file when installing or updating
  3154.       - Remove global lock on accessing config
  3155.       - Add global lock on reading/writing config file
  3156.     * SimpleDataStructure: Fix problem in fromBase64() that
  3157.       manifested itself as a configtunnels.jsp bug
  3158.  
  3159. 2010-11-24 sponge
  3160.     * Slackware, fix rc.i2p, bad logic.
  3161.  
  3162. 2010-11-24 sponge
  3163.     * Plugin: ticket 104 Fix webapp isRunning to check ALL webapps.
  3164.       The only defecency is that if one is running, that it considers the
  3165.       entire pliugin to be running. I'm not sure if that is a good thing
  3166.       or a bad thing, but the other code checks threads that way.
  3167.  
  3168. 2010-11-22 zzz
  3169.     * Addressbook: Fix rename error on Windows (tkt 323 - thanks RN!)
  3170.     * build.xml: Cleanup, fix distclean error in older ants.
  3171.     * Console:
  3172.       - Convert GraphHelper to a FormHandler
  3173.       - Require POST for all forms
  3174.       - Change the way we store the Writer to prevent problems
  3175.       - Fix bonus setting on configpeer.jsp
  3176.       - More ".jsp" removal
  3177.     * i2psnark:
  3178.       - Defer piece loading until required
  3179.       - Stub out Extension message support
  3180.       - Convert GET to POST, require POST
  3181.     * NTCP: Log tweak
  3182.     * SSLEepGet, Reseeder:
  3183.       - Implement additional CA loading
  3184.       - Provide facility to reuse SSL state for speed
  3185.       - Provide facility to store previously untrusted certificates
  3186.       - Add www.cacert.org cert to the installer and updater so
  3187.         SSL on a.netdb.i2p2.de and c.netdb.i2p2.de will work
  3188.       - Add SSL reseed hosts, prefer them by default
  3189.       - Reseed message cleanup
  3190.  
  3191. 2010-11-19 zzz
  3192.     * Addressbook
  3193.       - Store last-fetched time so we don't always fetch subscriptions after restart
  3194.       - Randomize first fetch time
  3195.       - Make most classes package private
  3196.     * Console: Rewrite URLs so we don't need .jsp
  3197.     * i2psnark: Recognize postman b32, recognize ogv and oga.
  3198.     * i2ptunnel:
  3199.       - More work on error propagation and improving log messages
  3200.       - Increase nonce queue size again
  3201.     * News:
  3202.       - Store news last-fetched time so we don't always fetch news after restart
  3203.       - Don't include news in the updater
  3204.     * peers.jsp fixups
  3205.     * PrivateKeyFile: Speedups and better messages
  3206.     * SecureFile: New class, catch places that were missed,
  3207.                   add i2p.insecureFiles option to disable (default false)
  3208.  
  3209. 2010-11-17 zzz
  3210.     * Addressbook: Try to save files safely
  3211.     * Console: Display durations with new tagged formatDuration2()
  3212.     * DataStructures:
  3213.       - Shim in 3 new abstract classes
  3214.         SimpleDataStructure, KeysAndCert, and DatabaseEntry
  3215.     * I2CP:
  3216.       - Send DisconnectMessage at router shutdown
  3217.       - Add username/password authorization
  3218.     * I2PTunnel:
  3219.       - Improve messages when starting and stopping tunnels
  3220.       - Index page outproxy display cleanup
  3221.     * I2PTunnel HTTP and Connect clients:
  3222.       - Shim in a new abstract superclass I2PTunnelHTTPClientBase for common code
  3223.       - Add local proxy username/password authorization
  3224.       - Add outproxy username/password authorization
  3225.       - Filter hop-by-hop Proxy headers appropriately
  3226.     * I2PTunnel SOCKS and SOCKS IRC clients:
  3227.       - Add local proxy username/password authorization
  3228.       - Add SOCKS 5 outproxy support, with username/password authorization
  3229.     * logs.jsp: Format multiline messages better
  3230.     * Stats: Improve Frequency, enable coalescing; cleanup and javadocs
  3231.     * stats.jsp: Cleanup, more tagging, hide obscure stuff unless ?f=1
  3232.     * Streaming: Fix bug causing read() to incorrectly return EOF
  3233.  
  3234. * 2010-11-15  0.8.1 released
  3235.  
  3236. 2010-11-08 zzz
  3237.     * I2CP: Fix NPE caused by null session options (seen in i2pbote)
  3238.  
  3239. 2010-11-06 HungryHobo
  3240.     * New Ant target: debianrepo
  3241.     * Rename debian target to debian-binary
  3242.     * New debian target generates binary and source packages
  3243.     * Debian tweaks
  3244.  
  3245. 2010-11-03 zzz
  3246.     * Merge and snark fixups
  3247.  
  3248. 2010-11-01 zzz
  3249.     * ClientConnectionRunner: Add synch to fix race causing AIOOBE
  3250.                               (http://forum.i2p/viewtopic.php?t=5061)
  3251.     * configlogging.jsp: Parse log limit with current locale
  3252.                 (ticket #118)
  3253.     * i2psnark:
  3254.       - Limit number of parallel requests of a single piece when in the end game
  3255.       - Shorten and weight the speed tracker so the display is more
  3256.         reflective of current speed
  3257.     * logs.jsp: Add message if wrapper log not found
  3258.                 (ticket #103)
  3259.  
  3260. 2010-10-30 zzz
  3261.     * i2psnark:
  3262.       - Priority mapping bugfix
  3263.       - Close files as we go when creating/checking
  3264.         so we don't run out of file descriptors
  3265.       - Update request queues after priority change
  3266.       - Only add wanted pieces to wanted list at startup
  3267.       - Make sure lastRequest is null when it should be
  3268.       - Delay during StopAll so we don't close the tunnel before the
  3269.         stopped announces go out and reopen it
  3270.       - Logging tweaks
  3271.  
  3272. 2010-10-27 zzz
  3273.     * i2psnark:
  3274.       - Don't stay interested if we run out of pieces
  3275.         to request (thanks sponge)
  3276.       - Enhance debug mode to show requests
  3277.       - Priority mapping bugfix
  3278.     * Transport: Avoid rare NPE at startup
  3279.  
  3280. 2010-10-24 zzz
  3281.     * FileUtil: Make it easier to compile without Pack200, or with
  3282.                 Apache Harmony's Pack200, add unzip to main()
  3283.     * i2psnark: Catch a race after disconnect()
  3284.     * NTCP: Catch a race after stop()
  3285.     * Router: Set permissions on wrapper.log when not called by RouterLaunch
  3286.     * Systray: New doc and main()
  3287.  
  3288. 2010-10-22 sponge
  3289.     * Sanity and some fixs for slackware package
  3290.  
  3291. 2010-10-22 sponge
  3292.     * Fix rc.i2p for slackware package
  3293.  
  3294. 2010-10-19 zzz
  3295.     * Escape & in logs and i2psnark (much more to do)
  3296.     * JobImpl: Deprecate two debugging methods
  3297.     * replaceAll() -> replace() when we don't need regex
  3298.  
  3299. 2010-10-15 zzz
  3300.     * i2psnark: Add file priority feature
  3301.     * I2PSocketEepGet: Set connect delay to save a RTT, will
  3302.       speed announces in i2psnark
  3303.  
  3304. 2010-10-12 zzz
  3305.     *** 1.6 or higher JDK now required to build
  3306.     * configlogging.jsp:
  3307.       - Add easy way to add an override
  3308.       - Make file size specifier more flexible
  3309.     * Console:
  3310.       - Sort RouterAddress options on netdb.jsp and peers.jsp
  3311.       - Remove unused web-*.xml file from war
  3312.     * Crypto:
  3313.       - Convert all ArrayList caching to LBQs in YKGenerator,
  3314.         HMACGenerator, and AESKeyCache.
  3315.       - Change DSAEngine params from Hash to new SHA1Hash, since
  3316.         these were really 20 byte hashes, not 32 byte Hashes.
  3317.       - Add stats to track YKGenerator caching success
  3318.       - Fix YKGenerator precalculation to be much more useful by
  3319.         increasing the cache size and dramatically shortening the delay
  3320.       - Option cleanups
  3321.       - YKGenerator cleanups
  3322.       - Mark HMAC256Generator unused
  3323.     * EepGet: Reset length variable on redirect
  3324.     * Files: Change permissions to 600/700 for all written files/directories.
  3325.       Now requires Java 1.6 to build, but only 1.5+ to run.
  3326.       (requires 1.6 to set permissiomns)
  3327.     * GeoIP: Fix locking bug causing lookups to stop
  3328.     * Hash: Throw IAE if data length is not 32 bytes,
  3329.       now that DSAEngine abuse is gone
  3330.     * HTTPResponseOutputStream:
  3331.       - More caching
  3332.       - Stats cleanup
  3333.       - Max header length check
  3334.       - Catch OOM
  3335.       - Initializer cleanup
  3336.       - Javadoc
  3337.     * I2CP:
  3338.       - Add new option i2cp.messageReliability=none, which prevents the
  3339.         router from sending MessageStatusMessages back in reply to an
  3340.         outbound SendMessageMessage. Since the streaming lib always ignored
  3341.         the MSMs anyway, make it the default for streaming.
  3342.         This will reduce the I2CP traffic significantly.
  3343.         MSM handling now avoided, but it is still fairly broken, see
  3344.         comments in I2PSessionImpl2.
  3345.       - Cleanups to replace method calls with fields
  3346.       - More cleanups, javadoc, rate reduction
  3347.     * i2psnark:
  3348.       - Compact response format
  3349.       - Add link to finished torrent in message box
  3350.       - Don't let one bad torrent prevent others from
  3351.         starting or stopping
  3352.       - Sort peers by completion %
  3353.       - Add some missing mime types to web.xml
  3354.       - shouldLog() cleanup
  3355.     * i2ptunnel:
  3356.       - Now that streaming flush() is fixed, use it in IRCClient, and
  3357.         for initial data in I2PTunnel runner, to avoid the 250 ms
  3358.         passive flush delay
  3359.       - Add hostname DSA signature field, to be used for addkey forms.
  3360.         Experimental, may be commented out later.
  3361.       - More header blocking (thanks telecomix!)
  3362.       - Remove unused web-*.xml file from war
  3363.     * Installer: Add startup hint for non-x86
  3364.     * Javadoc updates all over the place
  3365.     * LogConsoleBuffer: Java 5
  3366.     * Naming:
  3367.       - Increase cache size and expiration time
  3368.       - Add clearCache() method
  3369.       - Don't use EepGet or Exec for b32
  3370.       - Javadoc updates
  3371.     * NetDB:
  3372.       - Expire unreachable routers quickly, even if they don't have introducers,
  3373.         so we don't have old data on routers that ran out of introducers.
  3374.       - Fix rare NPEs at shutdown
  3375.     * NTCP:
  3376.       - Cleanups
  3377.     * Streaming:
  3378.       - Make flush() block less, by waiting only for "accept" into the
  3379.         streaming queue rather than "completion" (i.e. ACK from the far end).
  3380.         This prevents complete stalls when flushing, and should help performance
  3381.         of apps that use flush(), like i2psnark (and SAM?).
  3382.         close() still does a flush that waits for completion, as i2ptunnel
  3383.         doesn't like a fast return from close().
  3384.       - cleanups
  3385.     * SusiDNS:
  3386.       - Remove unused web-*.xml file from war
  3387.     * TransportManager: Convert _transports from a List to a CHM
  3388.       to prevent a rare concurrent exception
  3389.     * Tunnels:
  3390.       - Don't use peers < 0.7.9 for tunnels due to the old
  3391.         message corruption bugs
  3392.       - Javadoc
  3393.       - Cleanups
  3394.     * UDP:
  3395.       - Beginnings of destroy message support
  3396.       - Try to avoid running out of introducers by relaxing selection criteria
  3397.         and increasing minimum number of potential introducers
  3398.       - Avoid rare AIOOBE
  3399.       - PacketBuilder refactor
  3400.       - Make most classes package private
  3401.       - Comments
  3402.       - Logging cleanup
  3403.       - Comment out a main()
  3404.  
  3405. 2010-10-10 sponge
  3406.     * Fulfill Request for name resolving in BOB
  3407.  
  3408. 2010-09-15 dr|z3d
  3409.     * I2PSnark: Overhaul UI, implement new theme.
  3410.  
  3411. * 2010-07-12  0.8 released
  3412.  
  3413. 2010-07-08 zzz
  3414.     * I2PTunnel: More error propagation fixes
  3415.  
  3416. 2010-07-07 duck
  3417.     * RouterConsole: Add Help & FAQ link, minor label improvements.
  3418.  
  3419. 2010-07-05 zzz
  3420.     * i2psnark: Fix transition to end game
  3421.     * I2PTunnelIRCClient: Filter PART messages like we do for QUIT
  3422.  
  3423. 2010-07-04 duck
  3424.     * RouterConsole: Dutch translation (thanks to monkeybrains)
  3425.  
  3426. 2010-07-03 zzz
  3427.     * Build: Fix poupdate dependencies
  3428.     * I2PTunnel: More error propagation fixes
  3429.     * I2PTunnelHTTPClient: Don't use BufferedReader
  3430.  
  3431. 2010-07-01 zzz
  3432.     * EventDispatcher: Minor cleanups and comments
  3433.     * I2PTunnel: Don't start a tunnel if no valid destinations;
  3434.       cleanups, logging, and error propagation fixes
  3435.     * Transport: Fix NTCP address generation when host is specified but port is auto
  3436.  
  3437. 2010-06-29 sponge
  3438.     * 25%-50% cpu savings in BOB. The remainder of the fix is in streaming
  3439.       lib, which aparently keeps running and does not sleep according to
  3440.       profiling.
  3441.  
  3442. 2010-06-29 zzz
  3443.     * CapacityCalculator: Cleanup
  3444.     * I2PTunnel: Add default HTTPS outproxy
  3445.     * Jetty: Disable TRACE and OPTIONS in console and eepsite
  3446.     * RouterInfo: Add main() to dump RI files
  3447.     * Scale prng.buffers based on max memory, reduce default from 16 to 9
  3448.     * SOCKS: Better HTTP error message
  3449.  
  3450. 2010-06-26 zzz
  3451.     * I2PTunnel:
  3452.      - Move connection profile and delay connect to advanced config section
  3453.      - Add persistent client key support to SOCKS IRC
  3454.      - Fix display of interactive setting
  3455.     * jbigi, jcpuid: Suppress log messages when not in router context
  3456.     * jetty.xml: Add info on how to configure for following symlinks
  3457.     * logs.jsp: Add more JVM version info so we can distinguish OpenJDK from Sun
  3458.  
  3459. 2010-06-16 zzz
  3460.     * Console: Sort countries with selected locale
  3461.     * FileUtil: Try to handle lack of unpack200 support more gracefully
  3462.     * Update: Select old update URL if no unpack200 available
  3463.  
  3464. 2010-06-13 zzz
  3465.     * Console: Add some divs for languages to news and readmes
  3466.     * HTTP Proxy: Pass different User Agent to outproxy
  3467.     * i2psnark:
  3468.       - Move config to separate page
  3469.       - Icon tweaks
  3470.     * Translation: zh fix
  3471.  
  3472. 2010-06-12 welterde
  3473.     * fixed possible race-condition and improved code style in ObjectCounter utility class
  3474.  
  3475. * 2010-06-07  0.7.14 released
  3476.  
  3477. 2010-06-07 zzz
  3478.     * Misc tweaks after code review
  3479.  
  3480. 2010-06-05 zzz
  3481.     * Netdb:
  3482.       - Use new receivedAsReply flag in LeaseSet to mark
  3483.         those received as response to a query
  3484.       - Mark which methods in FloodfillPeerSelector may return
  3485.         our own hash
  3486.       - Redefine selectNearest() so it may return our own hash,
  3487.         so it can be used for closeness measurement
  3488.       - Redefine findNearestRouters() to return Hashes
  3489.         instead of RouterInfos
  3490.       - Fix LeaseSet response decisions for floodfills, based
  3491.         on partial keyspace and closeness measurements
  3492.       - List only count of published leasesets in netdb
  3493.  
  3494. 2010-06-03 zzz
  3495.     * NewsFetcher: Delay a minimum amount at startup
  3496.     * Update: Fix multiple updates after manually
  3497.       starting update - caused by refreshing summary bar
  3498.       (thx 'backup'!)
  3499.  
  3500. 2010-06-02 zzz
  3501.     * graphs.jsp: Tag some more
  3502.     * Translation: Set xgettext add-comments option
  3503.     * UDP: Fix a bug from a blank i2np.udp.host config
  3504.       causing frequent RouterInfo updates and incorrect
  3505.       addition of introducers, caused by config.jsp handling
  3506.     * Update: Change default update URLs to .su2 for pack200
  3507.  
  3508. 2010-06-01 zzz
  3509.     * i2psnark:
  3510.       - More listing fixes
  3511.       - Revert choker change
  3512.       - Start end game a little sooner
  3513.     * Installer: Disable pack200 in updater again, doesn't work
  3514.       on Java 1.5
  3515.     * Remove jetty from updater - it's been in for a few
  3516.       releases, and i2psnark now has its own listHTML method
  3517.  
  3518. 2010-05-27 zzz
  3519.     * Translate: Add GNU ngettext (plurals) support
  3520.  
  3521. 2010-05-26 zzz
  3522.     * i2psnark: Listing fixes and cleanups;
  3523.       icons on front page; tweak bw choker again
  3524.  
  3525. 2010-05-24 zzz
  3526.     * i2psnark: Listing icons and cleanups
  3527.  
  3528. 2010-05-23 welterde
  3529.     * core:
  3530.       - fixed major security hole in DatagramDissector
  3531.     * I2PTunnelServer: Implemented WEBIRC support in IRC server tunnel
  3532.  
  3533. 2010-05-23 zzz
  3534.     * i2psnark:
  3535.       - Choke slower when at bandwidth limit
  3536.       - Fix completion % for small files
  3537.       - Use Random from context
  3538.     * NewsFetcher:
  3539.       - Add backup URL
  3540.       - Change to 0 retries (was 2)
  3541.  
  3542. 2010-05-21 zzz
  3543.     * i2psnark:
  3544.       - Spiff up dir listings
  3545.       - Urlify some messages
  3546.       - Only go into end game at the end
  3547.  
  3548. 2010-05-19 zzz
  3549.     * Data: Remove lots of unnecessary initializers
  3550.     * susidns: More validatation when adding entry
  3551.  
  3552. 2010-05-15 zzz
  3553.     * Console:
  3554.       - Tag text in graphs
  3555.       - Move SummaryRenderer to its own file
  3556.     * Eepsite: Set no-cache in redirecting page
  3557.     * Hash: Move caching XOR methods only used by KBucket
  3558.       into netdb
  3559.     * i2psnark: CSS tweaks
  3560.     * Log: Translate priority
  3561.  
  3562. 2010-05-13 zzz
  3563.     * netdb.jsp debug tweaks
  3564.     * Plugins: Try to prevent ZipErrors after upgrade
  3565.  
  3566. 2010-05-10 zzz
  3567.     * Console:
  3568.       - Summary bar tweaks
  3569.       - Add monthly bw estimate
  3570.     * DataHelper: Deprecate inefficient eq() methods
  3571.     * i2psnark:
  3572.       - Add tunnel config dropdowns
  3573.       - Comment out old proxy stuff
  3574.     * NetDB:
  3575.       - Handle old and duplicate stores more efficiently
  3576.       - Have DataStore put() return success
  3577.       - Move getDistance() to its own class
  3578.     * Router: Add router.forceBandwidthClass advanced config for testing
  3579.     * Streaming: Add support for connection throttling
  3580.     * TunnelPoolManager: Concurrent
  3581.     * UDP: To help limit connections, don't offer to introduce
  3582.       when floodfill
  3583.  
  3584. 2010-05-10 sponge
  3585.      * PluginStarter: If there is some delay, there may be a really good reason for it.
  3586.        Loading a class would be one of them!
  3587.        So we do a quick check first, If it bombs out, we delay and try again.
  3588.        If it bombs after that, then we throw the ClassNotFoundException.
  3589.  
  3590. 2010-05-05 zzz
  3591.     * build.xml: Create packed sud in release
  3592.     * Console:
  3593.       - Print stack trace if exception on startup
  3594.       - IllegalStateException rather than NPE if no context
  3595.     * EepGet: Limit max times to fail completely even if numRetries is higher
  3596.     * i2psnark: Skip 'the' when sorting snarks
  3597.     * I2PTunnelHTTPClient: Reject 192.168.*
  3598.     * Plugins:
  3599.       - Set classpath for specific client only, not for the whole JVM
  3600.       - Use ConfigDir() not AppDir()
  3601.     * Replace size() <= 0 with isEmpty() everywhere, ditto > 0 -> !isEmpty()
  3602.     * RouterInfo: Clean up use of sortStructures()
  3603.  
  3604. 2010-05-02 zzz
  3605.     * ByteCache:
  3606.       - Add a per-cache stat
  3607.       - Limit each cache based on max memory
  3608.       - Disable in UDP MessageReceiver
  3609.       - Add clearAll() method to be called when under
  3610.         severe memory pressure; call from Router
  3611.     * Plugins: Fix version checker bug
  3612.  
  3613. 2010-04-27 zzz
  3614.     * i2psnark: Serve downloaded files from the servlet rather
  3615.       than with a file: link
  3616.     * Jetty: Backport directory listing bugfix from jetty 6
  3617.     * peers.jsp: Cleanup and tag
  3618.  
  3619. * 2010-04-27  0.7.13 released
  3620.  
  3621. 2010-04-23 zzz
  3622.     * Plugins: Cleanups
  3623.  
  3624. 2010-04-21 zzz
  3625.     * EepGet: Don't convert a MalformedURLException into
  3626.       an IOE so we recognize it when it's thrown
  3627.     * ReusableGZIPStreams:
  3628.       - Concurrent
  3629.       - Workaround for Apache Harmony 5.0M13 Deflater bug
  3630.     * TrustedUpdate: Increase buf size for extraction
  3631.  
  3632. 2010-04-18 zzz
  3633.     * configclients.jsp: Start button logic for clients was inverted
  3634.     * Console: IRC links in readmes and initialNews
  3635.     * I2PTunnelServer: Debug log incoming conns
  3636.     * Transport: Reduce floodfill max NTCP conns to 425 (was 500)
  3637.  
  3638. 2010-04-16 sponge
  3639.     * BOB early session destroy to speed up tunnel tare-down.
  3640.  
  3641. 2010-04-15 zzz
  3642.     * DataHelper: Limit max length in readline()
  3643.     * Floodfills: Increase max to 100 (was 60) and min to 60 (was 45)
  3644.     * i2ptunnel: Log tweaks
  3645.     * I2PTunnelHTTPServer: Limit max header lines
  3646.  
  3647. 2010-04-15 sponge
  3648.     * I2PTunnelHTTPClient: Test for "http://:/" and output error page.
  3649.       This avoids an ArrayIndexOutOfBoundsException, which can eventually
  3650.       cause the eepproxy to stop functioning.
  3651.  
  3652. 2010-04-12 zzz
  3653.     * configstats.jsp: Fix full stats checkbox default
  3654.     * i2psnark:
  3655.       - Concurrent, limit, display, log tweaks
  3656.     * i2ptunnel: Implement access lists for TCP servers.
  3657.       Enter b32 or b64 hash or dest into list box, and
  3658.       check enable for whitelist. Uncheck enable and enter
  3659.       i2cp.enableBlackList=true in advanced i2cp options for
  3660.       blacklist. Todo: make black/whitelists radio buttons.
  3661.     * LogManager: Concurrent
  3662.  
  3663. 2010-04-10 zzz
  3664.     * i2psnark:
  3665.       - Disconnect seeds that connect to a seed
  3666.       - Lower per-torrent conn limits for large pieces
  3667.     * Startup:
  3668.       - Don't die horribly if there is a router.info file
  3669.         but no router.keys file
  3670.         http://forum.i2p/viewtopic.php?t=4424
  3671.       - Log tweaks
  3672.     * Streaming:
  3673.       - Fix the window size increment logic so it
  3674.         does it much more often
  3675.  
  3676. 2010-04-08 zzz
  3677.     * Key Manager: Hopefully avoid some races at startup
  3678.       http://forum.i2p/viewtopic.php?t=4424
  3679.     * OCMOSJ:
  3680.       - Increase min timeout
  3681.       - Logging tweaks
  3682.     * Streaming:
  3683.       - Detect and drop dup SYNs rather than create
  3684.         a duplicate connection - will hopefully fix
  3685.         "Received a syn with the wrong IDs"
  3686.       - Send reset for a SYN ACK with the wrong IDs
  3687.       - Don't send a reset to a null dest
  3688.       - Logging tweaks
  3689.       - Cleanups
  3690.  
  3691. 2010-04-05 zzz
  3692.     * Console:
  3693.       - Add tooltip support for plugin links
  3694.       - Make target=_blank for plugin links
  3695.       - More HTML transitional fixes
  3696.       - Standardize on 'save' to the right of 'cancel'
  3697.  
  3698. 2010-04-02 zzz
  3699.     * FloodfillPeerSelector: Adjust rankings again
  3700.  
  3701. 2010-03-31 zzz
  3702.     * FloodfillPeerSelector: Adjust rankings to try to
  3703.       improve LeaseSet lookups
  3704.     * HostsTxtNamingService: Don't load the whole hosts.txt
  3705.       into memory for every lookup
  3706.  
  3707. 2010-03-29 zzz
  3708.     * build.xml: Prep for a windows-only pkg
  3709.     * configclients.jsp:
  3710.       - Always show start button for webapps and plugins
  3711.     * configclients.jsp, configupdate.jsp:
  3712.       - Fix submission when entering CR in a text box
  3713.     * EepGet: Don't retry after a MalformedURLException
  3714.     * HTTPResponseOutputStream: More static
  3715.     * Plugins:
  3716.       - Stop all plugins at shutdown
  3717.       - Log tweaks
  3718.     * WebApps:
  3719.       - Remove the WAC after stopping it
  3720.       - Stop a WAC before starting it to prevent dups
  3721.       - Implement destroy() in addressbook to prevent dups
  3722.       - Implement destroy() in i2psnark to prevent dups
  3723.  
  3724. 2010-03-25 zzz
  3725.     * configclients.jsp: Fix dup anchor
  3726.     * Console: Sort plugin links in summary bar
  3727.     * i2psnark:
  3728.       - Send numwant=0 if we don't need peers
  3729.       - Report returned complete and incomplete counts
  3730.         if higher than peer count
  3731.       - Allow missing peer list
  3732.       - Log tweaks
  3733.     * netdb.jsp: Tag transport properties
  3734.     * Plugins: Remove final check and install console
  3735.       messages after a while
  3736.     * PrivateKeyFile: Add b32 output
  3737.     * Reseed: Add another host
  3738.  
  3739. 2010-03-18 zzz
  3740.     * Blocklist, CommSystem, FIFOBandwidth, TransportManager,
  3741.       OutNetMessage, InNetMessagePool:
  3742.       - Java 5 cleanup
  3743.     * ByteCache:
  3744.       - Replace some locks with concurrent
  3745.     * Clients:
  3746.       - Negative delay means run immediately and inline
  3747.       - Add methods to test class and run inline,
  3748.         to propagate errors to the console
  3749.       - Use new methods for plugins
  3750.       - Add javadoc for clients.config format
  3751.     * config.jsp: Set burst to +10% for 20s by default,
  3752.       to fix bug where the burst stays high when limits
  3753.       are reduced.
  3754.     * FIFOBandwidthRefiller:
  3755.       - Replace global counters with atomics
  3756.       - Use lockless shortcut methods to grant
  3757.         requests if we can satisfy immediately
  3758.     * i2psnark: Tweak upload bw tracking
  3759.     * Installer: Enable pack200 (-3.3MB)
  3760.     * Job Queue:
  3761.       - Replace some locks with concurrent
  3762.       - Change job ID to a long so it won't wrap
  3763.       - Remove some unused stats
  3764.       - Java 5 and debug cleanup
  3765.     * KeyManager: Concurrent
  3766.     * logs.jsp: Add link to trac
  3767.     * netdb.jsp: Display transport cost if not default
  3768.     * Peer Manager:
  3769.       - Replace some locks with concurrent
  3770.       - Switch back to fast version of getPeersByCapability()
  3771.       - Java 5 cleanup
  3772.     * Streaming: Concurrent
  3773.     * Throttle:
  3774.       - Remove some unused stats
  3775.     * Tunnel Builds: Enable VTBM
  3776.     * Tunnel Dispatcher: Discard at IBGW based on router clock,
  3777.       not system clock.
  3778.     * TunnelGatewayPumper:
  3779.       - Refactor for concurrent
  3780.     * UDP:
  3781.       - Big refactor of several classes for concurrent,
  3782.         elimination of several locks
  3783.       - Reduce max number of resent acks in a packet to
  3784.         lower overhead
  3785.       - Take incoming messages from the head of the queue,
  3786.         not sure why taking them from the tail "reduces latency"
  3787.       - Java 5 cleanup
  3788.  
  3789. 2010-03-17 zzz
  3790.     * I2PTunnel: Disable nonce checking when console password set
  3791.     * Reseed: Add another host
  3792.  
  3793. * 2010-03-15  0.7.12 released
  3794.  
  3795. 2010-03-13 zzz
  3796.     * Partial fix for i2ptunnel nonce troubles
  3797.  
  3798. 2010-03-08 zzz
  3799.     * Floodfills: Increase max to 60 (was 28) and min to 45 (was 20)
  3800.     * i2psnark: Better track outgoing bandwidth by incrementing
  3801.       counter before the blocking write
  3802.     * Random: Remove and deprecate some old classses
  3803.     * Reseeder: Reduce max response size to 1MB (was 8MB)
  3804.  
  3805. 2010-03-05 zzz
  3806.     * Console:
  3807.       - Tag reseed messages
  3808.       - Translate country names on flag popups
  3809.     * I2PSOCKSIRCTunnel:
  3810.       - New, for filtering IRC client traffic when using SOCKS
  3811.     * I2PTunnelIRCClient:
  3812.       - Make filter classes static and public for use by SOCKS
  3813.       - Eliminate redundant case conversion
  3814.       - Pass ISON message through (jIRCii uses it for pings)
  3815.       - Switch back to StringBuffer since it's used by 2 threads
  3816.       - Set daemon on filter threads
  3817.     * SOCKS5Server:
  3818.       - Fix handling of multiple authentication methods
  3819.  
  3820. 2010-03-02 zzz
  3821.     * Console:
  3822.       - Add link to jobs.jsp on configservice.jsp
  3823.       - Add plugin disableStop support
  3824.     * Context: Add boolean getProperty methods
  3825.     * HTTP Proxy:
  3826.       - Fix address helper conflicts caused by last checkin
  3827.       - Use B32 instead of random hostname for conflict link
  3828.     * LoadClientAppsJob:
  3829.       - Fix unquoted arg after quoted arg
  3830.       - Logging cleanup
  3831.  
  3832. 2010-02-27 zzz
  3833.     * eepsite: Add some help to index.html
  3834.     * HTTP Proxy:
  3835.       - Put B32 instead of B64 in Host: header, saves 450 bytes
  3836.       - Eliminate some redundant lookups
  3837.       - Fix http://i2p/b64/ and /eepproxy/site/ requests
  3838.       - Disallow a port specified for an i2p address
  3839.       - Cleanup and comments
  3840.       - For more info see http://zzz.i2p/topics/566
  3841.     * i2psnark:
  3842.       - Fix NPE after create file failure
  3843.       - Sanitize more characters in file names
  3844.     * netdb: Fix NPE after OOM http://trac.i2p2.i2p/ticket/38
  3845.     * NTCP Transport:
  3846.       - Replace lists with concurrent queues in EventPumper
  3847.         and NTCPConnection to remove global locks
  3848.       - Java 5 cleanup
  3849.     * Plugins: Support console themes
  3850.     * UDP Transport:
  3851.       - Replace the unused-since-2006 TimedWeightedPriorityMessageQueue
  3852.         with DummyThrottle
  3853.       - Don't instantiate and start TWPMQ Cleaner and OutboundRefiller
  3854.         threads, part of priority queues unused since 0.6.1.11
  3855.       - Don't instantiate and start UDPFlooder, it is for testing only
  3856.       - Prevent NPE http://zzz.i2p/topics/571
  3857.  
  3858. 2010-02-23 zzz
  3859.     * Unzip: Any files in the zip with a .jar.pack or .war.pack extension
  3860.       will be transparently unpacked with unpack200. Savings is about 60%.
  3861.       Someday we will do this for suds, but we can do it for xpi2ps now.
  3862.     * build: Add updater200 target
  3863.  
  3864. 2010-02-22 zzz
  3865.     * configclients.jsp:
  3866.       - Add js delete confirm
  3867.       - Remove delete button for webapps
  3868.     * i2psnark:
  3869.       - Ignore a non-i2p tracker in a torrent rather than deleting
  3870.         the torrent, thus "converting" a torrent to in-netowrk use
  3871.         via the open trackers
  3872.       - Add js delete confirm
  3873.  
  3874. 2010-02-19 zzz
  3875.     * i2psnark: Make file box bigger
  3876.     * Plugins:
  3877.       - Fix display of download status
  3878.       - Unhide
  3879.  
  3880. 2010-02-18 zzz
  3881.     * Clock: Slew tweak
  3882.     * i2psnark: Improve error message when finding HTML
  3883.     * HTTP Proxy: Fix blank page instead of error page for eepsite unreachable
  3884.     * Plugins:
  3885.       - Fix plugin start button
  3886.       - Change signer prop to match docs
  3887.       - Tweaks
  3888.     * Transport:
  3889.       - Fix recognition of IP change when not firewalled
  3890.       - Require consecutive identical results from two peers before changing IP
  3891.     * TrustedUpdate: CLI exits 1 on failure for ease of use in scripts
  3892.  
  3893. 2010-02-15 zzz
  3894.     Propagate from 3 dev branches.
  3895.  
  3896.     i2p.i2p.zzz.test:
  3897.     * Clock:
  3898.       - getFramedAveragePeerClockSkew() now returns a long (ms);
  3899.         was a Long (s)
  3900.       - Implement NTP-style clock slewing so the clock is adjusted
  3901.         gradually
  3902.       - Implement clock strata so we prefer better clocks
  3903.       - Implement a timestamper in the transport so we will periodically
  3904.         update the clock even if NTP is not working.
  3905.         This allows the router to converge the clock instead of simply
  3906.         hoping the first connected peer is correct.
  3907.       - Slow down NTP attempts after several consecutive failures
  3908.     * Console: refactor and tag update messages
  3909.     * Streaming: MessageOutputStream logging tweaks
  3910.     * Transport:
  3911.       - Prepare for using address costs
  3912.       - Adjust bids based on address cost
  3913.       - Increase cost if near transport capacity, disabled until 0.7.12
  3914.       - Clear the geoip negative cache periodically
  3915.  
  3916.     i2p.i2p.zzz.plugin:
  3917.     * Jrobin: Move from routerconsole.jar to its own jrobin.jar,
  3918.       adjust classpath in routerconsole.jar manifest
  3919.     * Plugins:
  3920.       New plugin support, hidden for now, enable with router.enablePlugins=true
  3921.       Configure and add plugins on configclients.jsp
  3922.       Supports the following:
  3923.       - Console webapps
  3924.       - New translation bundles
  3925.       - Link on console
  3926.       - Anything that can be started in clients.config
  3927.       - Additions to classpath for clients and webapps
  3928.     * TrustedUpdate:
  3929.       - Add method to check if we know about a key
  3930.       - Add method to add a key
  3931.       - Add method to extract without verifying
  3932.       - Add method to get key signer name
  3933.     * Webapps: Allow additions to a webapp classpath.
  3934.       - Pull jstl.jar and standard.jar out of susidns.war
  3935.       - Remove 100KB of duplicate classes from i2psnark.war
  3936.  
  3937.     i2p.i2p.zzz.VTBM:
  3938.     * I2NP: Add UnknownI2NPMessage so we can route unknown message types
  3939.     * Tunnel Builds:
  3940.       - Add getRecordCount() to TunnelBuildMessage and TunnelBuildReplyMessage so they can be extended.
  3941.       - New I2NP Messages VariableTunnelBuildMessage and VariableTunnelBuildReplyMessage,
  3942.         which contain the number of request slots in them.
  3943.       - Convert all static assumptions of 8 slots to getRecordCount()
  3944.       - Use the new VTBM if all hops in the tunnel and the OBEP or IBGW of the reply tunnel
  3945.         support it, and the tunnel is 4 hops or shorter.
  3946.       - Reply to a VTBM with a VTBRM of the same size
  3947.       - Make BuildReplyHandler static
  3948.       - Convert the currentlyBuilding List to a ConcurrentHashMap to speed reply lookups
  3949.         and eliminate a global lock; don't put fallback tunnels in there
  3950.       - Add new tunnel.corruptBuildReply stat
  3951.       - Various cleanups and javadoc
  3952.       - Fix first hop expiration for Build Messages, was way too long
  3953.       - Randomize Build Message expiration to make it harder to guess hop position
  3954.       - Save expired tunnel build configs for a while, so that we will still use the tunnel
  3955.         and update peer stats if the reply comes in late
  3956.       - Don't update our own profile for Tunnel Build Replies
  3957.       - VTBM generation only through routers >= 0.7.12
  3958.       - VTBM generation disabled for now
  3959.  
  3960. * 2010-02-15  0.7.11 released
  3961.  
  3962. 2010-02-13 sponge
  3963.     * Fix addWebApplications API goofup
  3964.     * Bump BOB version, which I forgot to do.
  3965.  
  3966. 2010-02-13 zzz
  3967.     * Floodfills: Increase max to 28 (was 15) and min to 20 (was 10)
  3968.  
  3969. 2010-02-12 sponge
  3970.     * org.mortbay.jetty.Server modified method to accept attributes for
  3971.       batch webapp launches via addWebApplications.
  3972.  
  3973. 2010-02-10 zzz
  3974.     * I2PTunnelRunner: Flush initial data, for some reason it wasn't
  3975.       getting flushed ever in some cases.
  3976.  
  3977. 2010-02-10 zzz
  3978.     64-bit windows installer fixes. Still no 64-bit wrapper.
  3979.     Thanks eche|on for testing!
  3980.     * Izpack:
  3981.       Add 64-bit windows dll so installer doesn't die trying to add shortcuts
  3982.     * Launch4j:
  3983.       Upgrade to launch4j 3.0.1 2008-07-20.
  3984.       The license is BSD for launch4j and MIT for the wrapper code in head/
  3985.       Changelog is in installer/lib/launch4j/web/changelog.html
  3986.       Hopefully this will fix installs for 64-bit JRE on 64-bit windows.
  3987.       The previous version was 2.0-RC3 2005-08-13.
  3988.       The previous license was GPLv2 for launch4j and LGPLv2.1 for the wrapper code in head/
  3989.       The bin/ld.exe and bin/windres.exe files were contributed by
  3990.       i2p users in 2005 so the i2p installer could be built on windows.
  3991.       They have not been updated for 3.0.1, so pkg builds on windows
  3992.       will presumably still get 2.0-RC3.
  3993.  
  3994. 2010-02-06 zzz
  3995.     * Console: Fix saving update keys, was broken in 0.7.10
  3996.     * i2psnark: Add transmission ID
  3997.     * news.xml: Wrap i2p version tags in XML comment
  3998.     * Transport: Try yet again to prevent two NTCP pumpers
  3999.  
  4000. 2010-02-04 zzz
  4001.     * i2psnark: Fix sending stopped events to the tracker
  4002.  
  4003. 2010-02-03 zzz
  4004.     * Console:
  4005.       - Hide update buttons and update config if install dir is readonly or if configured
  4006.       - Show yellow star if no outbound tunnels
  4007.     * i2psnark: Don't prefer to opportunistically unchoke unchoking peers when not interested
  4008.     * NetDb: Lower min RouterInfo expiration to 2.5h (was 3h)
  4009.  
  4010. 2010-01-31 zzz
  4011.     * i2psnark standalone: Fix CSS
  4012.     * Jetty: Update to 5.1.15 to get ResourceHandler fix
  4013.  
  4014. 2010-01-30 sponge
  4015.     * Fix NPE in TCPtoI2P when a lookup fails, report the error to the stream.
  4016.     * Fix setkeys bug in DoCMDS, forgot to create the object before calling
  4017.       it's methods, which threw an NPE.
  4018.  
  4019. 2010-01-29 zzz
  4020.     * build.xml: Add a debian-source target
  4021.     * Data structures:
  4022.       - Speed up some hashcode() and equals()
  4023.       - Cleanup and javadoc
  4024.     * Jetty: Turn on checkAliases
  4025.     * NetDb:
  4026.       - Add basic DOS prevention for lookups
  4027.       - Move flood throttle check so we don't throttle ourselves
  4028.       - Don't store over client tunnels to pre-0.7.10 floodfills
  4029.       - Don't update unused lease fail stats
  4030.     * Startup: Disable browser launch for debian daemon
  4031.  
  4032. 2010-01-28 welterde
  4033.     * enhance support for multiple RouterAddresses' of the same style in RouterInfo
  4034.  
  4035. 2010-01-26 zzz
  4036.     * build.xml: Speed up distclean additions
  4037.     * Clock: Don't refuse to update because of peer skew the first time
  4038.     * Debian: Fixup, update, enhance scripts
  4039.     * I2NP: Various cleanup and bulletproofing
  4040.     * Log: Try to avoid complaints at shutdown
  4041.     * Profiles: Fix lack of profiles at router startup, especially for new routers
  4042.     * stats.jsp: Shrink the dropdown box
  4043.  
  4044. 2010-01-24 zzz
  4045.     * ProfileOrganizerRenderer: Cleanups
  4046.     * Reseed: Update welt's reseed hostname
  4047.     * Transport clock skews:
  4048.       - Store and report UDP clock skews even for large values, so
  4049.         a badly skewed local clock will be reported to the console
  4050.       - Don't shitlist for NTCP clock skew if we don't know what time it is
  4051.       - If NTP hasn't worked yet, have NTCP or SSU update the clock one time
  4052.       - Include failed clock skew in NTCP skew vector if there aren't many connections
  4053.       - Don't include NTCP clock skews for non-established connections
  4054.       - Fix framed clock skew frame size
  4055.       - Report framed clock skew even if for only one peer, if NTP hasn't worked yet
  4056.       - Don't log RRD errors after clock adjustment
  4057.       - Reduce min skew for console warning to 30s (was 45s)
  4058.       - More Java 5 cleanups
  4059.  
  4060. 2010-01-24 zzz
  4061.     * Clock:
  4062.       - Don't let a client update the router clock
  4063.       - Restore and enhance vanished clock error log message
  4064.     * Graphs: Enforce max size to lessen chance of OOM from malicious link
  4065.     * NetDb:
  4066.       - Move stat initialization, reduce number of rates
  4067.       - Add basic DOS prevention by not flooding if stores are too-frequent
  4068.     * ProfileOrganizer:
  4069.       - Limit High Cap to 75 max
  4070.       - Reduce max lock wait time, change no lock error to warning
  4071.       - More cleanup
  4072.     * Startup:
  4073.       - Enable multiple parallel job runners much sooner to speed startup
  4074.       - Rearrange the startup order to get the long jobs started sooner
  4075.       - Don't allow the netDb readin job to clog the job queue
  4076.  
  4077. 2010-01-21 dr|z3d
  4078.     * New eepsite structure and enhanced pages. Now with graphics and stuff!
  4079.  
  4080. * 2010-01-22  0.7.10 released
  4081.  
  4082. 2010-01-21 zzz
  4083.     * eepget.bat: Add to pkg
  4084.     * Floodfills: Increase max to 15 (was 9) and min to 10 (was 4)
  4085.     * I2PTunnelServer: Fix bug preventing connection retries
  4086.       at startup from working
  4087.     * Logs: Don't be quite so noisy in the wrapper log if we
  4088.       can't open the router log
  4089.     * Properties: Don't play games with \r and \n on load/save,
  4090.       it was causing fatal issues on DOS if your username started
  4091.       with r or n
  4092.  
  4093. 2010-01-19 sponge
  4094.     * Firewall fix for NTCP, where firewalls will forget a NAT relationship
  4095.       on a stream... AKA setting keepalive. This should fix the stuck NTCP
  4096.       issue that has been bothing zzz for years.
  4097.     * Set keepalive on BOB connections too, since this will assist closing
  4098.       the connections in the event of a crash on a client.
  4099.  
  4100. 2010-01-18 zzz
  4101.     * configclients.jsp: Fix add-new-client feature
  4102.     * Console: Add a tunnel share ratio estimate
  4103.     * graphs.jsp:
  4104.       - Remove jrobin sig
  4105.       - Set lower limit to 0
  4106.       - Save settings when changed
  4107.     * Reseed: Support SSL and proxies
  4108.     * Translate: Catch empty string
  4109.  
  4110. 2010-01-17 zzz
  4111.     * Clock: Change a CRIT to an ERROR, lower threshold for changing from 10s to 5s
  4112.     * configclients.jsp: Support add, delete, edit
  4113.     * I2CP: Clean up resources on 5-minute leaseset timeout at startup
  4114.     * LeaseSet generation: Increment the lease date slightly, to force
  4115.       the floodfill to flood it when it changes
  4116.     * NetDb Lookups: Don't try to send a RI lookup to itself through a zero-hop tunnel
  4117.     * NetDb Stores and Verifies:
  4118.       - Do LS stores and verifies through client tunnels
  4119.         to prevent correlation by the OBEP or FF
  4120.       - Encrypt LS stores to prevent snooping by the OBEP,
  4121.         if the floodfill supports it
  4122.       - Encrypt LS and RI verifies to prevent snooping by the OBEP
  4123.       - Extend verify delay and timeout
  4124.       - Reenable RI verifies
  4125.       - Disallow simultaneous verifies for the same key
  4126.       - Don't resend on verify timeout; try a different peer instead
  4127.       - Don't resend to same peer on verify fail, try a different one
  4128.       - Adjust ff selection criteria
  4129.       - Flood even if received garlic-encrypted
  4130.     * Profiles: Limit fast peers to 30 max
  4131.     * SSLEepGet: New
  4132.     * Tunnels: Prevent more than one zero-hop tunnel in a lease
  4133.     * VersionComparator: Move from TrustedUpdate.java to util
  4134.  
  4135. 2010-01-14 sponge
  4136.     * Fully clean up I2PTunnel. No more lint issues, should compile 100%
  4137.       clean.
  4138.     * Dropped unused class BufferLogger from I2PTunnel as it is not used
  4139.       anylonger.
  4140.  
  4141. 2010-01-14 sponge
  4142.     * Clean up reverse connection ability, remove some annoyingly redundent
  4143.       code. Place all settings in the console. It works!
  4144.  
  4145. 2010-01-10 sponge
  4146.     * Insert reverse connection ability into the http server code so that
  4147.       seedless can start to get worked on. It's disabled by default.
  4148.  
  4149. * 2010-01-12  0.7.9 released
  4150.  
  4151. 2010-01-12 zzz
  4152.     * I2CP: Clean up resources on 5-minute leaseset timeout at startup
  4153.     * Increase max floodfills to 9 (was 6)
  4154.     * Temporarily disable routerInfo floodfill verifies
  4155.     * Fix .fr eepsite index css
  4156.     * Javdoc tweaks
  4157.  
  4158.  
  4159. 2010-01-09 zzz
  4160.     * Include new eepsite indexes in pkg
  4161.  
  4162. 2010-01-06 zzz
  4163.     * Summary bar tweaks
  4164.  
  4165. 2010-01-02 sponge
  4166.     * Fix one last stupid mistake in build.xml, my fault.
  4167.  
  4168. 2010-01-02 sponge
  4169.     * Fix NB 6.8 goofyness... 'till ant 1.7.1 or > is needed, stay with NB
  4170.     6.5, as the newer ones place a check for 1.7.1. We require 1.7.0
  4171.  
  4172. 2010-01-02 sponge
  4173.     * Fix build.xml target for justBOB
  4174.     * Fix Main build.xml so that it actually deletes backup files and add a
  4175.       few extra types that should be commonly needed... atleast by me.
  4176.  
  4177. 2010-01-02 zzz
  4178.     * Console: Save refresh setting
  4179.     * i2psnark:
  4180.       - Don't URL-encode chars we don't have to
  4181.       - CSS tweaks
  4182.     * Transport: Implement 'laptop mode' to change ident and port
  4183.       when the IP changes
  4184.  
  4185. 2010-01-01 sponge
  4186.     * Happy New year everyone!
  4187.     * Added a target to generate a stand-alone BOB jar file.
  4188.  
  4189. 2009-12-31 zzz
  4190.     * BuildResponseRecord: Make static
  4191.     * i2np: Remove unused logs
  4192.     * i2psnark: Fix message box, was a little too small
  4193.     * InternalSocket: Fallback to external socket on fail
  4194.     * NetDb: Fix exploration by adding a null hash to mean
  4195.       "don't give me floodfills"
  4196.     * PeerSelector: Downgrade floodfills with high fail rate
  4197.  
  4198. 2009-12-26 zzz
  4199.     * Console:
  4200.       - Tag the rest of logs.jsp
  4201.     * Tunnels, Transports:
  4202.       - Lots of code to detect improper reuse of cached objects
  4203.         after release
  4204.       - Prevent release of TunnelDataMessage cached ByteArray,
  4205.         as it may be reused if retried in another transport;
  4206.         a nasty bug causing corrupt messages
  4207.       - Prevent race with released resources in UDP OutboundMessageState;
  4208.         a nasty bug causing corrupt messages
  4209.       - More cleanups and comments
  4210.     * UDP: Bid lower than NTCP when we need introducers and don't
  4211.       have enough
  4212.  
  4213. 2009-12-22 zzz
  4214.     * Tunnels:
  4215.       - Do RED dropping before the IBGW fragmenter, not after
  4216.       - Change batch time to 250ms for IBGWs (was 100ms)
  4217.       - Change batch time to 150ms for exploratory OBGWs (was 100ms)
  4218.       - Start a new message in the fragmenter if almost full
  4219.       - Fix a major, longstanding synchronization bug in the FragmentHandler
  4220.         which led to corrupt messages at the endpoints
  4221.       - More cleanups and comments
  4222.  
  4223. 2009-12-20 zzz
  4224.     * Console:
  4225.       - Fix status to show a disconnected network error rather than
  4226.         clock skew or UDP error when disconnected
  4227.       - Use peer clock skew rather than clock offset for determining
  4228.         whether to display clock skew error
  4229.       - tunnels.jsp: Clarify tunnel table headings
  4230.     * Contexts: Add isRouterContext() method
  4231.     * Profile, DBHistory:
  4232.       - Tweak the rate periods
  4233.       - Add a global fail rate stat
  4234.       - Increase the HashMap sizes
  4235.     * Router: Move some more threads to I2PAppThread so an OOM won't
  4236.       crash the router
  4237.     * Timestamper: Reduce delays (cuts 10s out of router startup)
  4238.     * Transport: Rework peer clock skew method to always return a value
  4239.     * Tunnels:
  4240.       - Reduce the drop probability for TunnelBuildMessages at the OBEP
  4241.       - Schedule outbound startup instead of hanging the thread for 3s
  4242.       - Cleanup preprocessor code, add comments
  4243.  
  4244. 2009-12-18 zzz
  4245.     * Console: Fix spacing in update section
  4246.     * I2CP:
  4247.       - Move client-side writes to their own thread
  4248.       - Reenable InternalSockets
  4249.     * i2ptunnel: Fix bundle script
  4250.     * InNetMessagePool: Cleanup
  4251.     * Log:
  4252.       - Close old file on rotate
  4253.       - Buffer writes
  4254.       - Write in UTF-8
  4255.     * SusiDNS:
  4256.       - Remove untranslatable button images (-15KB)
  4257.       - Tag buttons and messages
  4258.       - Add some button CSS
  4259.     * Tunnel building:
  4260.       - Increase timeout to 13s (was 10s)
  4261.       - Fix tunnel.buildReplyTooSlow stat
  4262.       - Tweak logging
  4263.       - Prioritize expl. builds over client builds
  4264.       - Code cleanups
  4265.     * TunnelSettings: Drop, unused
  4266.  
  4267. 2009-12-15 zzz
  4268.     * HTTP Proxy: Make jump server list configurable
  4269.     * I2CP: Remove unused logs
  4270.     * i2psnark: Fix stop/start, cleanups
  4271.     * i2ptunnel: Fix bundle location
  4272.     * SusiDNS:
  4273.       - Rewrite and correct a lot of the text, tag jsps
  4274.       - UTF-8 fixes
  4275.     * TunnelManager: Fix a locking bug
  4276.     * Update: Improve error message
  4277.  
  4278. 2009-12-13 zzz
  4279.     * Find ResourceBundles in wars
  4280.     * Fix restart from config.jsp if no wrapper
  4281.     * i2psnark: Elaborate popups
  4282.  
  4283. 2009-12-12 welterde
  4284.     * Sort peers on tunnels.jsp by country
  4285.     * fix NPE in ^^
  4286.  
  4287. 2009-12-12 zzz
  4288.     * Disable InternalSockets until it's fixed
  4289.  
  4290. 2009-12-11 zzz
  4291.     * Addressbook, susidns: Rework addressbook into a
  4292.       HttpServlet, so susidns can kick it when the subscription
  4293.       list changes
  4294.     * Build: Truncate the history in the updater (-80KB)
  4295.     * Console:
  4296.       - Add a nicer handler for missing webapps
  4297.       - Restore the restart message
  4298.       - Change "depth" to "length"
  4299.     * Data: Cache the Hash hashcode
  4300.     * EepGet: Use InternalSocket if available
  4301.     * Fragmenter: Pull the new comments, new stats, and
  4302.       debug log fix from i2p.i2p.zzz.batch in - but not the
  4303.       batching mods, which need a fresh look.
  4304.     * I2CP: Implement an internal "socket" class that
  4305.       allows clients in the same JVM to connect to the
  4306.       router without going through the kernel
  4307.     * I2NP: Drop unused classes
  4308.     * i2psnark:
  4309.       - Translation support
  4310.       - Tweak torrent name popup
  4311.     * I2PTunnel:
  4312.       - Translation support
  4313.       - Switch all I2PThreads to I2PAppThreads
  4314.       - Run an InternalSocket as well for the HTTP Proxy
  4315.     * Naming Services:
  4316.       - New EepGetAndAddNamingService that appends new
  4317.         hosts to hosts.txt
  4318.       - Move default reverseLookup to base class
  4319.       - Deprecate unused services
  4320.     * NetDb:
  4321.       - Switch from ArrayList to ConcurrentHashSet in
  4322.         KBucketImpl to reduce chance of deadlock;
  4323.         remove periodic shuffling of the bucket,
  4324.         needs to be addressed elsewhere
  4325.     * SusiDNS:
  4326.       - Translation support
  4327.       - Remove jsp's from the war
  4328.     * Translation: Move code from routerconsole to core,
  4329.       to support translation of other webapps
  4330.  
  4331. * 2009-12-08  0.7.8 released
  4332.  
  4333. 2009-12-08 zzz
  4334.     * Misc. cleanups after review, prep for release
  4335.  
  4336. 2009-12-06 zzz
  4337.     * netdb.jsp: Fix bug caused by XSS fix
  4338.     * Translations: drop ru until after release
  4339.  
  4340. 2009-12-05 zzz
  4341.     * Build: Fix poupdate dependency
  4342.     * Console: Add Russian option
  4343.  
  4344. 2009-12-05 sponge
  4345.     * BOB: fix a critical bug causing ghosts on probes
  4346.       and remove unused code.
  4347.  
  4348. 2009-12-04 zzz
  4349.     * Console: Close up some possible XSS (thanks Pragmatk)
  4350.     * i2psnark: Config cleanup, more HTML transitional fixes
  4351.     * readme*.html: Point to translated pages on www.i2p2.i2p
  4352.  
  4353. 2009-11-29 zzz
  4354.     * config.jsp: Comment out unused stuff better
  4355.     * profiles.jsp: Hide non-ff from ff table
  4356.     * HTTP Proxy: Don't send proxy.i2p to the naming service,
  4357.       it was making the error pages load slowly
  4358.     * SOCKS Proxy: Fix an error message
  4359.     * Transport: Fix the default inbound burst
  4360.  
  4361. 2009-11-29 sponge
  4362.     * net.i2p.router.transport.udp deadwood code cleanup.
  4363.     * documented rare NPE in InboundEstablishState.java.
  4364.  
  4365. 2009-11-28 sponge
  4366.     * Improvement to BOB's TCPio to hopefully lower load average. It seems
  4367.       to be helping a little when stress-tested with Robert.
  4368.  
  4369. 2009-11-24 zzz
  4370.     * DataStructures: Remove unused Logs
  4371.     * OrderedProperties: Simplify, use in i2psnark
  4372.     * Profiles: Record successes in the DB fail rate
  4373.       too, so we can calculate a percentage
  4374.     * profiles.jsp:
  4375.       - Change fail rate from count to percent
  4376.       - Hide standard profiles by default
  4377.     * Streaming:
  4378.       - When an "immediate" ack is requested, do it within
  4379.         250 ms (was 2000)
  4380.       - Request immediate acks when < 1/3 of window remains,
  4381.         or when < 3 packets remain in window,
  4382.         and every 8 packets (was when < 2 packets in window remain)
  4383.       - Change requested delay to RTT/2 (was RTO/2)
  4384.       - Log cleanup and javadoc
  4385.  
  4386. 2009-11-21 zzz
  4387.     * GeoIP: Update to Nov 17 2009 data
  4388.     * Netdb Floodfill rework part 4 of N:
  4389.       - Search closest-to-the-key
  4390.       - Put closest-to-the-key in explore don't-include-list
  4391.       - Use facade's peer selector for exploration rather than
  4392.         instantiating a new one
  4393.       - Adjust response time limit
  4394.     * netdb.jsp: Add popups on flags
  4395.     * Routerconsole build: rename include files so they aren't
  4396.       compiled and bundled separately (~15KB)
  4397.  
  4398. 2009-11-18 zzz
  4399.     * Build: Don't update the po files by default, add new
  4400.       target "poupdate" to do that.
  4401.     * Netdb:
  4402.       - Floodfill rework part 3 of N: Send closest-to-the-key
  4403.         in DSRM replies
  4404.       - Adjust criteria for following DSRM
  4405.       - Note failed floods in the profile
  4406.       - Reduce max flood
  4407.  
  4408. 2009-11-16 zzz
  4409.     * addressbook: Move class to net.i2p.addressbook
  4410.     * build: Take two test scripts out of the installer
  4411.     * i2psnark: Bye TPB
  4412.     * Shitlist: Fix bug from two checkins ago, all were forever
  4413.  
  4414. 2009-11-14 zzz
  4415.     * HTTP Proxy:
  4416.       - Add support for error page translations
  4417.       - Add support for external pages for all errors
  4418.       - Fix lack of \r in error page headers
  4419.       - HTML transitional fixes
  4420.       - Cleanups
  4421.     * UDP PeerTestManager: Throw in some synchronization to
  4422.       try to fix stuck tests
  4423.  
  4424. 2009-11-11 zzz
  4425.     * Console: Some colon cleansing
  4426.     * FloodfillPeerSelector: Adjustments
  4427.     * Shitlist: Move HTML renderer to router console,
  4428.       add cause parameter for ease of translation,
  4429.       tag all causes
  4430.  
  4431. 2009-11-11 zzz
  4432.     * Addressbook, NamingService: Allow 516 byte dests
  4433.       that end with AA but not AAAA, so we can permit
  4434.       non-null zero-length certs.
  4435.     * Console:
  4436.       - Tag tunnel status
  4437.       - Add transport table to netdb.jsp
  4438.     * i2psnark:
  4439.       - Reject torrents with too many pieces
  4440.       - Reject torrents with a single file named *.torrent
  4441.       - Increase max piece size to 2MB (was 1MB), but reduce
  4442.         max number of connections to lessen ooms
  4443.     * Netdb FloodOnlySearchJob:
  4444.       - Fix up field hiding and duplicate overrides
  4445.       - Other javadoc and java 5 improvements
  4446.     * Netdb StoreJob, FloodfillVerifyStoreJob:
  4447.       - Fix bug where reply selector wasn't registered for
  4448.         routerinfo stores, so we didn't get stats, and
  4449.         we kept retrying. This also prevented verification
  4450.         and profile updates for routerinfo stores.
  4451.         This bug was introduced 4 years ago by the change to
  4452.         store routerinfos directly.
  4453.       - Add dbStoreSuccessful() to profile, and have FVSJ
  4454.         call it or dbStoreFailed() as appropriate to give
  4455.         credit or blame to the floodfill we stored to.
  4456.       - Don't let FVSJ verify using the peer we stored to
  4457.     * Netdb Stores:
  4458.       - Floodfill rework part 2 of N:
  4459.         Store and verify closest to the key, subject to
  4460.         last-failed lookup and store stats.
  4461.       - DataHelper: Fix broken byte[] compareTo() used by XORComparator,
  4462.         was not doing unsigned comparisons!
  4463.       - FloodfillPeerSelector: Use standard XORComparator
  4464.         now that it works, instead of messing with BigInteger
  4465.       - FloodfillVerifyStoreJob: Set correct timeout for
  4466.         requeued store job (was only 10s)
  4467.       - KNDF: Rework getPeerTimout() to use 1 day averages,
  4468.         and lower the min, max, and multiplication factor.
  4469.       - Publish jobs: Lengthen timeout to 90s (was 30s for
  4470.         routerinfos and 60s for leasesets)
  4471.       - StoreJob: Limit max peer timeout to 15s for direct stores
  4472.     * Streaming: Fix unused resend delay field in the packet header,
  4473.       it is defined as seconds and we were not dividing by 1000,
  4474.       so we were truncating 1000 to one byte which equals 232.
  4475.     * UDP:
  4476.       - Better handle a test reply from bob with a 0-length IP
  4477.       - Add config options for min and max random port
  4478.  
  4479. 2009-11-09 dr|z3d
  4480.     * New midnight blue lightweight theme; supports IE and provisions its own console_big.css
  4481.     * Streamlining and honing of console_big.css
  4482.  
  4483. 2009-11-07 zzz
  4484.     * Console:
  4485.       - countries.txt: Convert to mixed case, include in update
  4486.       - netdb.jsp: Hide all routers by default, sort and tag country names
  4487.       - oldstats.jsp: Move to stats.jsp
  4488.       - profiles.jsp: Show new DBH times instead of counts
  4489.     * Profiles:
  4490.       - Track last good and bad lookup times
  4491.         and last good and bad store times,
  4492.         to prep for floodfill changes
  4493.       - Don't reset last-heard-about at router startup
  4494.     * Checklist and Android readme fixups
  4495.  
  4496. 2009-11-04 zzz
  4497.     * Build:
  4498.       - Move some files to installer/resources
  4499.       - Fix initialNews.xml in install package
  4500.     * Console: More tagging
  4501.     * NetDb: Reduce routerinfo expiration slightly
  4502.     * Profiles:
  4503.       - Remove the almost-unused send and receive size RateStats;
  4504.         this also reduces the effective time for isActive()
  4505.       - Only store DB history on-demand to save space;
  4506.         fix up resulting NPEs
  4507.       - Savings: ~2MB heap
  4508.     * Throttle: Reduce max msg delay to 1250ms (was 1500)
  4509.     * UDP: Pick a random port on first install or bind failure -
  4510.       No more port 8887 to prevent easy state-level blocking
  4511.  
  4512. 2009-11-04 sponge
  4513.     * Fixups to Slackware scripts
  4514.  
  4515. 2009-10-31 zzz
  4516.     * Console:
  4517.       - More tagging
  4518.       - Show user-installed themes on configui.jsp
  4519.       - Fix reseed button spacing
  4520.     * GraphHelper cleanup
  4521.     * Susidns: add link to subscription faq
  4522.  
  4523. 2009-10-29 zzz
  4524.     * Console tag fixes, bundle script fix
  4525.     * Add help target to build.xml
  4526.  
  4527. 2009-10-28 zzz
  4528.     * Console:
  4529.       - Rewrite TrustedUpdate version comparator, use for netdb version table
  4530.         so 0.7.10 will be sorted correctly
  4531.       - Reduce netdb.jsp memory usage
  4532.       - More tagging fixups
  4533.       - configclients.jsp fixup for "Web console"
  4534.       - Remove limiter status from peers.jsp
  4535.       - Fix UPnP status header
  4536.     * NetDb:
  4537.       - Generate new RI immediately at startup
  4538.       - Try again to not publish RI until we have been up a few minutes
  4539.  
  4540. 2009-10-26 zzz
  4541.     * Console:
  4542.       - Add parameterized tag
  4543.       - Don't save config when checking for updates on configupdate.jsp
  4544.       - Refactor confignav.jsp to java and tag
  4545.       - Start tagging profiles.jsp
  4546.       - Rework ConfigRestartBean and tag
  4547.       - More tag fixups
  4548.       - Add lang=xx for testing
  4549.       - Add file for additional tagged strings
  4550.  
  4551. 2009-10-23 zzz
  4552.     * Certificate: Fix the (apparently unused) readBytes(byte[], int) method
  4553.       for a null certificate - http://zzz.i2p/topics/388 - thanks HungryHobo
  4554.     * Console:
  4555.       - Don't hide link to configui.jsp for IE any more
  4556.       - Add lang selection on configui.jsp
  4557.       - Tag strings in configui.jsp
  4558.       - Load console_big.css if lang == zh
  4559.       - Add _x() tag for static iniitializers
  4560.       - HTML transitional input tags
  4561.       - Rename cssHelper to intl for ease of tagging
  4562.     * Update: Better error message when .sud file not found or truncated
  4563.       http://forum.i2p/viewtopic.php?t=3979
  4564.       The bug with the file going to the wrong place was fixed a couple months ago.
  4565.  
  4566. 2009-10-21 dr|z3d
  4567.     * Enhance index.jsp with "paperclips" for the main links
  4568.     * Tighten sidepanel layout to gain us some vertical screen real estate
  4569.     * Update news.xml with the correct link for Chinese translation page
  4570.  
  4571. 2009-10-20 zzz
  4572.     * I2NP: Remove old TunnelCreateMessage and TunnelCreateStatusMessage
  4573.     * Logger: Don't kill the whole JVM if we can't open the log file
  4574.     * MessageHistory: Cleanups
  4575.     * NetDb: Move renderStatusHTML to routerconsole
  4576.     * Router Console translation infrastructure:
  4577.       - Persistent lang setting with routerconsole.lang=xx
  4578.       - Loading any page with ?lang=xx changes the persistent setting
  4579.       - Add a custom Jetty handler to load foo_xx.jsp if it
  4580.         exists for language xx. This is for jsp files with lots
  4581.         of text in them. Otherwise use inline translate methods.
  4582.         Not for included jsps.
  4583.       - Add a script to create and update messages_xx.po translation
  4584.         files, and create ResourceBundles from them
  4585.       - Add class to translate strings from cached ResourceBundles
  4586.       - Add translate wrappers to HelperBase, FormHandler, and *Renderer,
  4587.         so calls can be made from both jsp and java files
  4588.       - Add example translations on configupdate.jsp - two in
  4589.         the jsp itself and one in the helper.
  4590.       - This is for strings in routerconsole only. Will be expanded
  4591.         to other webapps and the router later.
  4592.     * summarynoframe.jsp:
  4593.       - Refactor to SummaryBarRenderer (saves 100KB)
  4594.       - Add translate tags
  4595.       - Use context RNG for nonces
  4596.       - Transitional HTML style for input tags
  4597.     * TunnelDispatcher: Drop messages that expire far in the future
  4598.     * TunnelPoolManager: Move renderStatusHTML to routerconsole
  4599.  
  4600. 2009-10-16 dr|z3d
  4601.     * Extensive UI whitespace cleanups and positional finessing.
  4602.  
  4603. 2009-10-16 zzz
  4604.     * Crypto: Two more test classes out of the lib
  4605.     * FloodfillMonitor: Slow down the volunteers again
  4606.     * i2psnark: Add TPB tracker
  4607.     * NetDb: Rework part 1 of N:
  4608.       - Flood only to those closest to the key
  4609.       - Java 5 fixups
  4610.     * oldconsole.jsp: Remove almost all of it, add lines for tino
  4611.     * ProfileOrganizerRenderer:
  4612.       - Move to routerconsole
  4613.       - Write directly to Writer for speed
  4614.     * Router: Add router.hideFloodfillParticipant option for testing
  4615.     * StatisticsManager: Cleanup after release
  4616.  
  4617. * 2009-10-12  0.7.7 released
  4618.  
  4619. 2009-10-11 zzz
  4620.     * Misc. cleanups after review, prep for release
  4621.  
  4622. 2009-10-09 zzz
  4623.     * ElGamalEngine: Fix rare AIOOBE (thanks hottuna!)
  4624.     * I2PTunnel: Fix persistent client tunnel keyfile location
  4625.     * peers.jsp: Fix NTCP rate formatting (thanks hottuna!)
  4626.  
  4627. 2009-10-09 dr|z3d
  4628.     * Add paste.i2p2.i2p, and echelon's software links to readmes (thanks
  4629.       to GoHE for Swedish translations); cosmetic tweaks to same.
  4630.     * Various optimizations and tweaks to all 3 themes.
  4631.  
  4632. 2009-10-07 zzz
  4633.     * Doc and eepsite_index updates
  4634.     * UDP: Remove port number from thread names
  4635.  
  4636. 2009-10-04 zzz
  4637.     * i2psnark: Fix NPE caused by last checkin (thanks wuxia!)
  4638.  
  4639. 2009-10-02 zzz
  4640.     * BuildMessageTest: Move out of the lib
  4641.     * i2psnark: Fix changing opentracker list
  4642.     * Makefile.gcj: fixups
  4643.     * OCMOSJ: Fix SKM NPE on closed dest
  4644.     * ProfileOrganizerRenderer: static tweaks
  4645.     * SusiDNS: HTML transitional fixes, might help opera
  4646.     * Tunnel IVValidator: Increase size of bloom filter
  4647.       for high-bw routers (>= 512KBps share bw) to reduce
  4648.       false positive rate. Adds 2MB heap for >= 512KBps routers
  4649.       and 6MB for >= 1536KBps.
  4650.  
  4651. 2009-09-21 sponge
  4652.     * fixups to SlackBuilds. requiredbuilder does the wrong thing, and
  4653.       thinks that java is perl! This isn't really a big deal,
  4654.       the file format is simple enough and the requirements are known.
  4655.  
  4656. 2009-09-07 mkvore
  4657.     * removes a SAM v1&2 bug
  4658.  
  4659. 2009-09-04 zzz
  4660.     * SessionKeyManager, OCMOSJ, Garlic:
  4661.       - Enable per-client SessionKeyManagers for better anonymity
  4662.       - tagsDelivered() now means tags are sent, not acked.
  4663.       - OCMOSJ uses the new TagSetHandle object returned from tagsDelivered()
  4664.         to call tagsAcked() or failTags() as appropriate.
  4665.       - Assume tags delivered on an established session to
  4666.         reduce streaming lib stalls caused by massive tag deliveries;
  4667.         should increase throughput and window sizes on long-lived streams
  4668.       - Unacked tagsets on a new session are stored on a separate list
  4669.       - Don't kill an OB Session just because it's temporarily out of tags
  4670.       - Increase min tag threshold to 30 (was 20) due to new speculative
  4671.         tags delivered scheme, and to increase effective max window
  4672.       - More Java 5 and dead code cleanups, and more comments and javadoc,
  4673.         debug logging cleanups
  4674.       - Key toString()s for easier debugging
  4675.       - HandleGarlicMessageJob: cleanup of unused things
  4676.     * Tunnel TestJob:
  4677.       - Consume the tag after a failed test so it doesn't
  4678.         stay in the SKM
  4679.       - Disable tests with router.disableTunnelTesting=true
  4680.     * configkeyring.jsp: Add delete and cancel buttons
  4681.     * Logging: Fix directory for rotated log
  4682.     * TunnelDispatcher: Cleanup
  4683.  
  4684. 2009-09-02 sponge
  4685.     * Small logic fix for dr|z3d
  4686.  
  4687. 2009-08-28 zzz
  4688.     * Client: Fail if no date handshake after 30s or no leaseset
  4689.       after 5m, rather than hanging forever.
  4690.     * Console:
  4691.       - Prevent OOMs in NewsFetcher or StatsSummarizer from
  4692.         killing the router
  4693.       - Fix favicon (-17)
  4694.     * Data: Speed up many hashcodes
  4695.     * DataHelper: Fix byte array hashcode for small arrays
  4696.     * DecayingBloomFilter:
  4697.       - Replace with new DecayingHashSet for 3 of 4 uses,
  4698.         and also in the 4th if the router is low-bandwidth.
  4699.         Saves 8 MB heap.
  4700.     * EepGet, I2PSnark:
  4701.       - New I2PSocketEepGet fetches through existing tunnels
  4702.         rather than through the proxy
  4703.       - Use new eepget for i2psnark
  4704.       - Add a fake user agent for non-proxied fetches
  4705.       - Cleanups
  4706.     * NetDb:
  4707.       - oops, store leaseset locally even when shutting down
  4708.         (fix -16)
  4709.       - Java 5 cleanups
  4710.     * PRNG:
  4711.       - Rename config option to prng.buffers (was router.prng.buffers)
  4712.       - Change the default from 16 to 2 for I2PAppContext (saves 3.5MB)
  4713.     * Tunnel:
  4714.       - Adjust the random drop probability for the message size
  4715.       - Concurrentify HashSetIVValidator
  4716.     * TunnelPool:
  4717.       - Don't test tunnels when shutting down
  4718.       - Less rates
  4719.       - Java 5 cleanups
  4720.  
  4721. 2009-08-24 zzz
  4722.     * ClientManager:
  4723.       - Prevent client destination theft by rejecting duplicates
  4724.       - Java 5 cleanups
  4725.     * Console:
  4726.       - Put favicon on every page
  4727.       - Make every page UTF-8, Γÿâ safe for snowmen
  4728.       - Remove options boxes on configtunnels.jsp
  4729.       - Fix UTF-8 form submission (i2ptunnel too)
  4730.       - Throw 403 instead of 404 from flags.jsp and viewstat.jsp
  4731.         so we don't render error.jsp
  4732.     * I2CP: Fix the SessionConfig serializer in DataHelper,
  4733.       so that UTF-8 tunnel names are not corrupted by
  4734.       I2CP and can be displayed on the console
  4735.     * Message: Move 2 unused classes out of the router lib (~15KB)
  4736.       (more SKM prep)
  4737.     * Message, I2PSession, SessionKeyManager, Console:
  4738.       Prep for SessionKeyManager work in the router -
  4739.       Fix up SKM renderStatusHTML(); add debug.jsp to see it;
  4740.       Redefine getClientSessionKeyManager();
  4741.       More cleanups
  4742.     * Ministreaming: Kill deprecation warnings
  4743.     * profiles.jsp: Bulletproofing, less memory usage
  4744.     * Streaming, I2PSession:
  4745.       Prep for SessionKeyManager work in the router -
  4746.       Comment out, deprecate, and javadoc for unused keys and tags,
  4747.       they are vestiges of end-to-end crypto
  4748.     * Updates: Verify zip at startup before extracting
  4749.     * Wrapper: Take a couple fields out of the log so it's narrower
  4750.  
  4751. 2009-08-20 zzz
  4752.     * Config files:
  4753.       - Add some path and encoding help
  4754.     * configclients.jsp: Add full path to config file
  4755.     * configpeer.jsp: Limit max displayed banned IPs
  4756.     * Console:
  4757.       - Don't display firewall warning unless it's real
  4758.       - Cleanups
  4759.     * DataHelper, I2PTunnel, Router:
  4760.       - Save config files in UTF-8 rather than the default encoding,
  4761.         since we read them in UTF-8!
  4762.     * eepsite_index_de.html: localhost -> 127.0.0.1
  4763.     * i2psnark: Add size total
  4764.     * I2PTunnel:
  4765.       - Make IRC Proxy non-shared, delayed-start, close-on-idle
  4766.         for new users, for the anonymity benefits (see "Shared Clients,
  4767.         Correlation and Collusion" http://zzz.i2p/topics/217 )
  4768.       - Remove "experimental" flag on new client options
  4769.     * Jetty build: More clean targets
  4770.     * jetty.xml: Change encoding to UTF-8
  4771.     * jobs.jsp: Cleanup
  4772.     * logs.jsp: Add system encoding
  4773.     * Ministreaming: Cleanups, deprecation, move demos out of the lib
  4774.     * netdb.jsp: Flags for leases
  4775.     * NTCP: Clean up clock skew shitlist message
  4776.     * profiles.jsp:
  4777.       - Rename the Failing column
  4778.       - Reduce the time cutoff again to 90m (was 2h)
  4779.     * readme*html: localhost -> 127.0.0.1
  4780.     * Router: Don't do some things when we are shutting down
  4781.     * Shitlist: Clean up expire message
  4782.     * Stats:
  4783.       - Fix BufferedStatsLog so it works at all
  4784.       - Don't instantiate BufferedStatsLog unless stats.logFilters
  4785.         property is defined (restart now required to enable logging)
  4786.         This eliminates the StatLogWriter thread and a decent
  4787.         amount of memory.
  4788.       - Move two CLI classes out of the lib
  4789.       - Commment out places where getStatLog() isn't checked for null
  4790.       - Cleanups
  4791.     * Transports: Lower conn limit factor to 50 (was 60)
  4792.     * Update:
  4793.       - Fix problems where a requested unsigned update would actually
  4794.         kick off a signed update
  4795.       - Fix problem when policy set to notify, and clicking
  4796.         check for update, incorrectly causing unsigned update download
  4797.         and bad messages
  4798.       - Verify zip integrity of unsigned updates
  4799.       - Move zip files to router dir, not base dir
  4800.       - More tweaks and cleanup
  4801.     * VMCommSystem fixups
  4802.     * WorkingDir: Ensure modified files are processed with UTF-8 encoding
  4803.     * XmlPull: Remove, unused.
  4804.  
  4805. 2009-08-19 sponge
  4806.     * Java code to set Router Console password for dr|z3d
  4807.  
  4808. 2009-08-18 dr|z3d
  4809.     * Fixes for sidepanel
  4810.     * Overhauled classic theme for i2ptunnels
  4811.     * First stage of code validation to fix broken and "illegal" code
  4812.     * Multifarious other UI tweaks and fiddles.
  4813.  
  4814. 2009-08-15 sponge
  4815.     * Merge in dr|z3d and my own html fixes for router console java and jsp
  4816.       files so that Opera (and now IE?) doesn't puke anymore on the missing
  4817.       and misplaced HTML tags.
  4818.     * Optimized all jsp files so that they are shorter to save space, which
  4819.       is then used to fix the broken HTML. We should break even space-wise.
  4820.     * Bump to -13.
  4821.  
  4822. 2009-08-11 sponge
  4823.     * Code Janitor time! Many fixes and documenting fixes that should be
  4824.       done in the future. for the most part, this is a general code cleanup.
  4825.     * On smaller/embedded systems, the "final" keyword cleanups will have
  4826.       more of an impact than on larger systems.
  4827.     * Document missing hashCode() methods.
  4828.     * Unhide more variables to make code easier to read.
  4829.  
  4830. 2009-08-11 zzz
  4831.     * Android:
  4832.       - Merge in the branch
  4833.       - Build instructions in the android/ dir
  4834.       - Rename HMac to I2PHMac to avoid android lib conflicts
  4835.       - Configurable number of PRNG buffers in AsyncFortunaStandalone
  4836.         (router.prng.buffers=16) to control memory use - these
  4837.         are 256KB each.
  4838.       - Configurable size of the DecayingBloomFilters
  4839.         (router.decayingBloomFilterM=23) to control memory use - there
  4840.         are 4 pairs of these (8 total), each 2**(M-3) bytes,
  4841.         or 8MB total for M=23.
  4842.       - There's at least two unsolved fatal problems:
  4843.         1) Most of the routerinfo signature verifications fail,
  4844.            including our own
  4845.         2) It randomly dies after a while
  4846.     * Console:
  4847.       - Rename the shitlist and the blocklist
  4848.       - Try to reduce servlet problems on iframe
  4849.       - Select server or client icon for local dests
  4850.     * EepHead: New
  4851.     * Move StatsGenerator from router to routerconsole
  4852.     * Move the unused AdminManager from router to the apps directory
  4853.     * NetDb stats: Hide part. tunnel total events, effective next release
  4854.     * Router: Comment out dead oldconsole code
  4855.     * Updater:
  4856.       - Add new unsigned update option, triggered by
  4857.         last-modified date, using the new EepHead.
  4858.         Buttons still are not hidden after download complete.
  4859.       - Make the .sud updater use the temp dir when proxied
  4860.       - Several cleanups
  4861.  
  4862. 2009-08-11 dr|z3d
  4863.     * Extensive sidepanel overhaul
  4864.       - Ensure all sidepanel headings link to pertinent pages
  4865.       - First stage of enhanced Local Destinations sub-panel presentation
  4866.       - Move Configuration, Help, and I2PTunnel manager links to headings
  4867.       - Add tooltips to all linked content; table content next in line
  4868.  
  4869. 2009-08-07 dr|z3d
  4870.     * summarynoframe.jsp
  4871.       - Main content now tabulated for better presentation
  4872.       - Headings now more prominent
  4873.       - Pruning where necessary of text strings
  4874.     * Console themes (light/dark/classic)
  4875.       - Ensure functionality with new sidepanel layout
  4876.       - Custom hacks for IE/classic
  4877.       - Enhanced form/button presentation
  4878.  
  4879. 2009-08-07 zzz
  4880.     * build.xml:
  4881.       - Try to automate the release process
  4882.       - Take jetty back out of the updater after 4 releases
  4883.     * Console:
  4884.       - Add a custom error page
  4885.       - Don't count ourselves in known peers
  4886.       - Hide update button when shutting down
  4887.       - Increase skew warning threshold to 3s (was 100ms)
  4888.       - Remove UTC time from summary bar
  4889.       - Truncate long dest names
  4890.       - Try to reduce servlet problems on index page
  4891.     * Core:
  4892.       - Catch unzip fd leaks on error
  4893.       - Move 2 test classes out of the lib
  4894.     * Eepsite:
  4895.       - Quote the jetty.xml path in clients.config,
  4896.         and adjust the migration function, to fix the
  4897.         eepsite-won't-start bug on windows
  4898.     * HTTP Proxy:
  4899.       - Restore the localhost error message
  4900.       - Catch 127.0.0.1:xxxx addresses too
  4901.     * I2PTunnel:
  4902.       - Move the privkey files from the app dir to the
  4903.         config dir, in preparation for splitting the two
  4904.         dirs by default
  4905.     * Ministreaming:
  4906.       - Make getInt() static
  4907.       - Move the big TestSwarm class out of the lib
  4908.     * NetDb stats: Post-release cleanup
  4909.     * PersistentKeyRing: Fix broken storage of keys in config file
  4910.     * Router: Move the WorkingDir class from i2p.jar to router.jar
  4911.     * Streaming: New option i2p.streaming.answerPings (default true)
  4912.     * Timestamper: Don't start thread if not enabled
  4913.     * Wrapper:
  4914.       - Extend timeout to 20s (was 5s)
  4915.       - Shorten ping interval to 5m (was 10m)
  4916.  
  4917. 2009-08-03 dr|z3d
  4918.     * Extensive update to the Classic theme; custom css hacks for IE.
  4919.  
  4920. 2009-08-02 dr|z3d
  4921.     * Better support for Internet Explorer/classic theme.
  4922.     * Incremental improvements to classic theme.
  4923.     * More UI tweaks and fiddles.
  4924.     * Fixes for I2PSnark UI; more to come.
  4925.  
  4926. 2009-07-31 dr|z3d
  4927.     * Resolve anomalous buttons and text fields in console ui.
  4928.     * Enhance presentation of data in /peers.jsp.
  4929.     * Fix themes issue with horizontal width of radio/checkbox icons.
  4930.     * Other cosmetic UI enhancements.
  4931.  
  4932. * 2009-07-31  0.7.6 released
  4933.  
  4934. 2009-07-31 zzz
  4935.     * Update versions, package release
  4936.     * Fix snark.css link
  4937.     * Revert graph antialias enable
  4938.     * Remove <center> from iframe head
  4939.     * Fix tunnels.jsp HTML
  4940.     * Prevent linux-only installer screen from displaying on windows
  4941.  
  4942. 2009-07-28 zzz
  4943.     * Add new reseed URL (thanks eche|on!)
  4944.  
  4945. 2009-07-27 zzz
  4946.     * Add flag dimensions to speed up profiles.jsp rendering
  4947.     * Catch i2psnark create torrent with no data entered error
  4948.       http://forum.i2p/viewtopic.php?t=3763
  4949.     * Fix typos in proxy error files
  4950.  
  4951. 2009-07-26 zzz
  4952.     * Add wrapper.config and i2prouter comments for 'portable'
  4953.     * Recognize same base and config dir in WorkingDir
  4954.     * Reformat XInfoPanel in installer for clarity
  4955.  
  4956. 2009-07-25 dr|z3d
  4957.     * Enhance the layout of /graphs.jsp
  4958.     * Fix some of the irks in I2PSnark UI.
  4959.     * Ongoing tweaks and fiddles to the themes' css. Not finished by any means!
  4960.  
  4961. 2009-07-24 zzz
  4962.     * Eepsite: Add Deutsch index page and css (thanks sperrbezirk!)
  4963.     * Router: Support i2p.dir.base and i2p.dir.config passed in via properties
  4964.     * Throttle: Decrease default max tunnels to 2500
  4965.  
  4966. 2009-07-23 dr|z3d
  4967.     * Include additional tile graphics and I2PSnark header logo in /console/images/
  4968.     * Tidy up some layout irks; add some last minute 0.7.6 pre-release sparkle!
  4969.     * Ongoing overhaul of the I2PSnark UI.
  4970.  
  4971. 2009-07-23 sponge
  4972.     * Add bob.i2p and sponge.i2p keys to hosts.txt
  4973.  
  4974. 2009-07-23 sponge
  4975.     * Fix jdk 1.6izm in BOB as per zzz
  4976.  
  4977. 2009-07-22 dr|z3d
  4978.     * More work on the I2PSnark UI.
  4979.     * Start of improvements to tunnel table data.
  4980.     * Ongoing theme enhancements.
  4981.  
  4982. 2009-07-21 dr|z3d
  4983.     * First stage of overhaul of webapps ui.
  4984.       susidns, susimail & i2psnark now lightly themed.
  4985.     * Proxy error messages now themed as per chosen theme.
  4986.     * Modest tweaks to the classic theme, et al.
  4987.  
  4988. 2009-07-21 zzz
  4989.     * configclients.jsp: Close anchor
  4990.     * Console: Drop top-level css, unused now
  4991.     * Eepsite: Add default robots.txt (thanks v1v4)
  4992.     * GeoIP: Add license info
  4993.     * HTTP Proxy: Additional proxy.i2p restrictions
  4994.     * ServiceManager: Drop, unused
  4995.  
  4996. 2009-07-20 zzz
  4997.     * BuildHandler: Increase threshold for dropping instead
  4998.       of rejecting to 81% (was 75%)
  4999.     * Console: Hide configui.jsp from IE, disable selection
  5000.     * GeoIP: Fix minor bugs (thanks Arsene)
  5001.     * graphs.jsp: Reduce refresh time to eliminate double iframe load
  5002.     * HTTP Proxy: Fix proxy.i2p "home page" (thanks dr|z3d)
  5003.     * I2PSnark: Remove Postman tracker
  5004.     * Peer Profiles:
  5005.       - Reduce max age for display to 2h (was 3h)
  5006.       - Drop unused Persist classes
  5007.       - Dynamically adjust expire time to control memory use
  5008.       - Increase reorganize time to 45s (was 30s) to reduce CPU use
  5009.         and lock contention
  5010.       - Remove some stat rates
  5011.       - Delay start of PeerTestJob
  5012.     * Stats: Increase coalesce time to 50s (was 20s) to reduce CPU use
  5013.     * summarynoframe.jsp: Cleanup
  5014.     * Transports: Reduce the number of Rates
  5015.  
  5016. 2009-07-16 zzz
  5017.     * HTTP Proxy: Themes for error pages
  5018.  
  5019. 2009-07-16 sponge
  5020.     * ministreaming:
  5021.       - small pedantic fix
  5022.     * streaming:
  5023.       - Fix a deadly race condition.
  5024.       - Some small pedantic fixes.
  5025.     * core:
  5026.       - Fix a deadly race condition.
  5027.     * BOB:
  5028.       - Fixed some races that occured from fixing races in streaming and core.
  5029.       - Some badly needed code refactoring to depend less on the database.
  5030.  
  5031. 2009-07-15 zzz
  5032.     * Console:
  5033.       - Make light the default theme
  5034.       - Convert readme_zh.html from GB2312 to UTF-8
  5035.     * Installer: Don't launch the router from the postinstall.sh script
  5036.       on linux anymore; add a panel to the installer to provide launch instructions.
  5037.  
  5038. 2009-07-15 sponge
  5039.     * Slackware SlackBuild fixes.
  5040.  
  5041. 2009-07-14 dr|z3d
  5042.     * Increment to 0.7.5-10
  5043.     * Tidy up layout of readme.* files.
  5044.     * Work on console css to make it more Opera/webkit friendly.
  5045.     * Other cosmetic tweaks.
  5046.  
  5047. 2009-07-13 zzz
  5048.     * Build: Add readme*.html files to the udpater
  5049.     * Build Handler: Don't reject for conn limits if class O,
  5050.       under the assumption that they are already talking
  5051.       to most of the routers, so there's no reason to reject. This may drive them
  5052.       to their conn. limits, but it's hopefully a temporary solution to the
  5053.       tunnel build congestion. As the net grows this will have to be revisited.
  5054.     * Throttle: Increase default max tunnels to 3000,
  5055.       to give us more capacity during congestion
  5056.     * Tunnels: Change the default variance from 1 to 0.
  5057.       Under the one-packet-enough theory, and the fact that most
  5058.       tunnels in a x+1 pool are of length x, variable lengths
  5059.       don't really help that much. Also, a default of 1 led
  5060.       to all sorts of problems with iMule/SAM, who was not
  5061.       setting the variance properties.
  5062.       This will affect exploratory tunnels for new users,
  5063.       and those that have never saved a change on configtunnels.jsp,
  5064.       and iMule users 1.4.5 and earlier.
  5065.  
  5066. 2009-07-12 zzz
  5067.     * Add configui.jsp
  5068.     * orange flash remove take 2
  5069.  
  5070. 2009-07-11 zzz
  5071.     * netdb.jsp: Fix bad tag causing orange mouseovers
  5072.  
  5073. 2009-07-11 dr|z3d
  5074.     * More enhancements to the router console, consolidation of the
  5075.       light and dark themes.
  5076.       - Apply new themes with routerconsole.theme=light/dark/classic
  5077.         added to advanced config.
  5078.  
  5079. 2009-07-11 zzz
  5080.     * Build Handler: Drop rather than reject requests when near
  5081.       conn limits and the next hop is not connected, to reduce
  5082.       connection congestion
  5083.     * Console: Force IE to the classic theme
  5084.     * I2PSnark:
  5085.       - Bring back details links for Postman2 B64 torrents
  5086.     * I2PTunnel:
  5087.       - Make reduce-on-idle the default for all the shared clients
  5088.         for new installs (15m)
  5089.     * Profile Organizer:
  5090.       - Allow NTCP-only peers in inbound tunnels
  5091.     * Transports:
  5092.       - Move from a single connection limit threshold (80%) to
  5093.         two (75% and 87%), and only start rejecting tunnels
  5094.         at the higher threshold, to increase build success
  5095.       - Move some limit methods from the transports to TransportImpl
  5096.       - Add limit methods with a threshold argument
  5097.       - Increase default SSU conn limits a little more
  5098.  
  5099. 2009-07-07 dr|z3d
  5100.     * Introducing 2 new console themes (light & dark), in addition
  5101.       to changes to the console navigation; navbar now resides in
  5102.       the sidepanel and other stuff besides. More to follow!
  5103.  
  5104. 2009-07-06 zzz
  5105.     * Console: Fix small textareas on Opera
  5106.     * EepGet: Don't send X-Accept-Encoding for non-proxied fetches
  5107.     * HTTP Proxy: Limit proxy.i2p to /themes/ directory
  5108.     * I2PSnark:
  5109.       - Change postman2 announce URL to use hostname rather than B64
  5110.       - Shorten torrent name to fit better on one line
  5111.     * I2PTunnel:
  5112.       - Add edit text
  5113.       - Fix broken favicon
  5114.     * Move almost all uses of StringBuffer to StringBuilder,
  5115.       for efficiency (thanks Arsene for the suggestion)
  5116.     * Reseed:
  5117.       - Fix console status messages broken by global replace
  5118.       - Remove tino, add b.netdb.i2p2.de
  5119.     * SSUDemo: Move to the router/java/test directory
  5120.     * Startup: Log clients.config problems
  5121.     * Transport: Implement NTCP auto-transition from an
  5122.       address to no address, so that inbound NTCP is disabled
  5123.       after SSU detects a firewall. When UPnP was apparently successful
  5124.       but the router is still firewalled (due to an additional
  5125.       software firewall or a bad UPnP indication, for example)
  5126.       the router will now remove the NTCP address.
  5127.  
  5128. 2009-07-05 sponge
  5129.     * Added X-I2P-DestB64 and X-I2P-DestB32 http headers
  5130.  
  5131. 2009-06-29 zzz
  5132.     * Big directory rework:
  5133.       Eliminate all uses of the current working directory, and
  5134.       set up multiple directories specified by absolute paths for various uses.
  5135.  
  5136.       Add a WorkingDir class to create a user config directory and
  5137.       migrate certain files to it for new installs.
  5138.       The directory will be $HOME/.i2p on linux and %APPDATA%\I2P on Windows,
  5139.       or as specified in the system property -Di2p.dir.config=/path/to/i2pdir
  5140.       All files except for the base install and temp files will be
  5141.       in the config directory by default.
  5142.       Temp files will be in a i2p-xxxxx subdirectory of the system temp directory
  5143.       specified by the system property java.io.tmpdir.
  5144.  
  5145.       Convert all file opens in the code to be relative to a specific directory,
  5146.       as specified in the context. Code and applications should never open
  5147.       files relative to the current working directory (e.g. new File("foo")).
  5148.       All files should be accessed in the appropriate context directory,
  5149.       e.g. new File(_context.getAppDir(), "foo").
  5150.  
  5151.       The router.config file location may be specified as a system property on the
  5152.       java command line with -Drouter.configLocation=/path/to/router.config
  5153.       All directories may be specified as properties in the router.config file.
  5154.  
  5155.       There will be no migration from an existing installation
  5156.       unless the system property -Di2p.dir.migrate=true is set.
  5157.       If there is no migration, it will continue to use $I2P for all files,
  5158.       except for temporary and PID files.
  5159.  
  5160.       The following linux scripts are now customized with the install path at,
  5161.       installation, and may be moved to /usr/local/bin and run from any
  5162.       working directory:
  5163.           eepget, i2prouter, runplain.sh
  5164.  
  5165.       For new installs, the i2p base directory ($I2P) may be read-only
  5166.       if updates are disabled. The only time i2p should write to the base directory
  5167.       is to unzip the update file. Updates are downloaded to the config dir. If, upon
  5168.       restart, the base dir is not writable, it will log a message and continue.
  5169.  
  5170.       Additional information, copied from I2PAppContext:
  5171.  
  5172.       #  Directories. These are all set at instantiation and will not be changed by
  5173.       #  subsequent property changes.
  5174.       #  All properties, if set, should be absolute paths.
  5175.       #
  5176.       #  Name    Property     Method        Files
  5177.       #  -----    --------     -----        -----
  5178.       #  Base    i2p.dir.base    getBaseDir()    lib/, webapps/, docs/, geoip/, licenses/, ...
  5179.       #  Temp    i2p.dir.temp    getTempDir()    Temporary files
  5180.       #  PID    i2p.dir.pid    getPIDDir()    router.ping
  5181.       #  Config    i2p.dir.config    getConfigDir()    *.config, hosts.txt, addressbook/, ...
  5182.       #
  5183.       #  (the following all default to the same as Config)
  5184.       #
  5185.       #  Router    i2p.dir.router    getRouterDir()    netDb/, peerProfiles/, router.*, keyBackup/, ...
  5186.       #  Log    i2p.dir.log    getLogDir()    logs/
  5187.       #  App    i2p.dir.app    getAppDir()    eepsite/, ...
  5188.  
  5189.       *  Note that the router can't control where the wrapper actually puts its files.
  5190.  
  5191.       All these will be set appropriately in a Router Context.
  5192.       In an I2P App Context, all except Temp and PID will be the current working directory.
  5193.  
  5194.       Related changes:
  5195.       i2prouter:
  5196.       - Don't cd to script location, no longer required
  5197.       jbigi, cpuid:
  5198.       - Extract files from jar to temp dir, load from that dir, then
  5199.         copy to the base dir if we have permissions (and failing silently
  5200.         if we don't), so we have optimized libs and no complaints
  5201.         when we have a read-only base dir.
  5202.       logs.jsp:
  5203.       - Get wrapper log location from a property too
  5204.       - Display log file locations
  5205.       RouterLaunch:
  5206.       - If no wrapper, put wrapper.log in system temp dir
  5207.         unless specified with -Dwrapper.logfile=/path/to/wrapper.log
  5208.         or it already exists in CWD (for backward compatibility)
  5209.       - Append rather than replace wrapper.log
  5210.       - Pass wrapper log location to router as a property, so that logs.jsp can find it
  5211.       runplain.sh:
  5212.       - Add path substitution to runplain.sh on install
  5213.       - Pass I2P base dir to the router as a property
  5214.       Systray:
  5215.       - Fix NPE if no config file
  5216.       wrapper.config:
  5217.       - Put wrapper.log in system temp dir for new installs
  5218.       - Pass I2P base dir to the router as a property
  5219.  
  5220. 2009-06-29 zzz
  5221.     * HTTP Proxy:
  5222.       - Add simple web server for "proxy.i2p" to serve
  5223.         images and CSS for the error pages
  5224.       - Take CSS out of the error pages; use internal server
  5225.         for CSS, image, and favicon
  5226.     * i2psnark build:
  5227.       - Move FetchAndAdd to static inner class
  5228.       - Fix standalone build to include i2psnark.jar since classes
  5229.         aren't in the .war anymore
  5230.       - Have standalone jetty use I2PAppContext temp directory
  5231.       - Replace launch-i2psnark.jar with launch-i2psnark script,
  5232.         since RunStandalone is in i2p.jar
  5233.       - Clean up jetty-i2psnark.xml, turn off jetty logging
  5234.       - Remove standalone build from the pkg target in the main build.xml
  5235.     * Jbigi, CPUID:
  5236.       - Reduce memory demand on startup from 4MB to 4KB each
  5237.     * NetDb: Fix an NPE on early shutdown
  5238.     * Reseeding / NetDb:
  5239.       - Move reseeding from the routerconsole app to
  5240.         the router, so that we can bootstrap an embedded router lacking a routerconsole
  5241.         (iMule or android for example), without additional modifications.
  5242.         This allows better integration between the reseeding function
  5243.         and the netDb.
  5244.       - Call reseed from PersistentDataStore, not from the
  5245.         routerconsole init, and start seeding as soon as the netdb has read
  5246.         the netDb/ directory, not when the console starts.
  5247.       - Wake up the netdb reader as soon as reseeding is done,
  5248.         rather than waiting up to 60s.
  5249.       - Don't display the reseed button on the console until the
  5250.         netdb initialization is done.
  5251.     * RouterConsoleRunner:
  5252.       - Catch a class not found error better
  5253.  
  5254. 2009-06-29 zzz
  5255.     * Console: Convert table headers to <th> to prep for CSS changes
  5256.     * Console CSS: Move css file, make a classic theme to prep for CSS changes
  5257.     * Console: Move favicon.ico and i2plogo.png out of the .war
  5258.       so that the HTTP proxy can use them directly;
  5259.       proxy error pages must be updated next
  5260.     * NetDb stats: Normalize tunnel build stats for increased anonymity,
  5261.       effective in 0.7.6
  5262.  
  5263. 2009-06-30 sponge
  5264.     * General cleanup on streaming and ministreaming.
  5265.       This fixes some compile warnings, and prepares for a larger fix.
  5266.       There is no code-flow changes, just lint. One warning remains as I am
  5267.       unsure exactly how to solve the problem yet.
  5268.  
  5269. * 2009-06-29  0.7.5 released
  5270.  
  5271. 2009-06-29 Complication
  5272.     * Update versions, package release
  5273.     * Remove the last reference to my eepsite as a "news.xml" source,
  5274.       and likewise stop my public key from being included
  5275.       among valid release signing keys.
  5276.  
  5277. 2009-06-25 sponge
  5278.     * Summary frame layout change so it makes sense.
  5279.  
  5280. 2009-06-23 zzz
  5281.     * Browser Launch: Add sensible-browser, x-www-browser, defaultbrowser, and
  5282.       www-browser in an attempt to launch the user's preferred browser
  5283.     * configupdate.jsp: Cleanup
  5284.     * Installer: Include console.css!!!
  5285.     * NTCP: Try again to prevent two Event Pumpers
  5286.     * Update: Increase max retries
  5287.     * UPnP: Catch AIOOBE reported by tuna
  5288.  
  5289. 2009-06-21 zzz
  5290.     * Browser Launch: Wait until the routerconsole is up before launching the browser
  5291.     * Installer: Fix wrapper.config parsing on windows
  5292.     * netdb.jsp: Add country chart at bottom, clean up version chart
  5293.     * News Fetcher:
  5294.       - Change default news URL, use it instead of the old one even if
  5295.         the old one is saved in the configuration, to assist in the transition
  5296.     * ReseedHandler:
  5297.       - check for upper case HREF to be compatible with apache indexes
  5298.     * Statistics Manager: post-0.7.4 cleanup
  5299.     * Transport: Treat 5.0.0.0/8 (Hamachi) as local
  5300.  
  5301. 2009-06-17 Mathiasdm
  5302.     * desktopgui:
  5303.       - Added client and server tunnel view
  5304.         (saving does not work yet)
  5305.  
  5306. 2009-06-17 zzz
  5307.     * PeerSelector:
  5308.       - Limit exploratory tunnels to connected peers when over
  5309.         half the connection limit (was 80%)
  5310.       - Have the high capacity tier fall back to a new connected tier
  5311.         before moving on to the not failing tier
  5312.         so that tunnel build success doesn't collapse and drive
  5313.         connections to the limit
  5314.     * PeerTestJob:
  5315.       - Limit to connected peers
  5316.  
  5317. 2009-06-12 zzz
  5318.     * Console:
  5319.       - Move the console css from default.css in the .war to docs/themes/console/console.css,
  5320.         and support console themes in the main console with routerconsole.theme=foo
  5321.       - Remove unused NoticeHelper
  5322.  
  5323.     * Installer:
  5324.         Upgrade to izpack 4.3.0 and add a short script to fix Vista install problems.
  5325.         (previous izpack was 3.7.2 from 2005-04-22)
  5326.  
  5327.         izpack 4.3.0 from :
  5328.         http://dist.codehaus.org/izpack/releases/4.3.0/IzPack-install-4.3.0.jar
  5329.         SHA1 f06da6b26ac2c68fed64ab38980352989b8d8841
  5330.         (no signatures or sha1sums found on website, and the jar is unsigned)
  5331.         License: Apache 2.0
  5332.  
  5333.         upack izpack:
  5334.         java -jar IzPack-install-4.3.0.jar
  5335.         or
  5336.         java -jar IzPack-install-4.3.0.jar -console
  5337.  
  5338.         get the standalone-compiler.jar from the installation lib/ directory:
  5339.         SHA1 6d2b4a5657bfb864a333b1c4b1c0f8223aa57d80
  5340.         (no signatures or sha1sums found on website, and the jar is unsigned)
  5341.  
  5342.         This fixes the bug with the install windows centered in all the
  5343.         workspaces, not the current workspace. And who knows what other
  5344.         bugs in the last 4 years.
  5345.  
  5346.         To fix Vista (and presumably Windows 7) permissiom problems,
  5347.         add a run-privileged flag for those, and run the new fixperms.bat
  5348.         which calls icacls to add the privileges to the install directory.
  5349.  
  5350.         Add support for 6 more language packs found in the new release.
  5351.         Change from ISO3 codes to native language names.
  5352.  
  5353.         Disable creation of the i2p.tar.bz2 file in build.xml
  5354.         (distributed as i2pheadless-0.7.x.tar.bz2), as izpack 4.3.0 now
  5355.         supports headless installation with java -jar i2pinstall.exe -console.
  5356.         Update INSTALL.txt and INSTALL-headless.txt accordingly.
  5357.  
  5358.       - Add install and temp path substitution to wrapper.config and
  5359.         i2prouter on install
  5360.  
  5361.       - Change the wrapper.config classpath to one line: lib/*.jar
  5362.         This means we lose control of classpath load order, so move the windows installer
  5363.         jars copy.jar, delete.jar, and exec.jar to a new installer/ directory so
  5364.         these jars won't be in the classpath or potentially conflict, since
  5365.         copy.jar and delete.jar include FileUtil.class, and we don't want to have
  5366.         to remember to add them to the updater if we ever change FileUtil.class.
  5367.         Delete the installer/ directory in postinstall.sh since it is windows-only.
  5368.  
  5369.     * Watchdog: Only try to dump threads if there is a wrapper
  5370.          and we aren't on windows
  5371.  
  5372. * 2009-06-12  0.7.4 released
  5373.  
  5374. 2009-06-12 Complication
  5375.     * Update versions, package release
  5376.  
  5377. 2009-06-09 zzz
  5378.     * NTCP: Fix startup race NPE (thanks postman!)
  5379.  
  5380. 2009-06-08 sponge
  5381.     * Last commit for this cycle. All debugging except for WARN removed.
  5382.       I can use the visit command to debug now anyway.
  5383.  
  5384. 2009-06-08 sponge
  5385.     * Removed BOB debugging as-per zzz
  5386.  
  5387. 2009-06-08 sponge
  5388.     * Fixed NPE and some other goofups in BOB.
  5389.     * BOB bump version
  5390.  
  5391. 2009-06-07 zzz
  5392.     * Build file:
  5393.       - Add updaterWithJettyFixesAndGeoIP, use it in pkg for one release
  5394.       - Cleanups
  5395.     * Console:
  5396.       - netdb.jsp cleanup
  5397.       - tunnels.jsp cleanup
  5398.     * ExploratoryPeerSelector:
  5399.       - Limit to connected peers when near connection limit
  5400.     * Timestamper:
  5401.       - Use locale country if geoip unavailable
  5402.     * Transport:
  5403.       - Lower min NTCP idle time to 3m (was 5m)
  5404.       - Increase SSU conn limit by 33%
  5405.     * UPnP: Fix deprecation warning
  5406.     * Watchdog:
  5407.      - Defang him again
  5408.  
  5409. 2009-06-06 sponge
  5410.     * Added BOB's license to licenses
  5411.     * Janitorial javadoc fixes *sigh*
  5412.     * bump to -13
  5413.  
  5414. 2009-06-05 sponge
  5415.     * Merge and bump to -12
  5416.  
  5417. 2009-06-05 sponge
  5418.     * BOB now cleans up tunnels, although they can take up to 5 minutes to
  5419.       disapear. This is due to the fact that the streaming lib doesn't
  5420.       actually remove the connections properly and kill them off when the
  5421.       manager is destroyed. I'm not certain if this is a bug, or a feature,
  5422.       but it sure is annoying, and you have to wait for the connections to
  5423.       time out. What should happen is the streaming lib should cause an IO
  5424.       error to the pending read or write.
  5425.  
  5426. 2009-06-05 zzz
  5427.     * Build file:
  5428.       - Add license info for launch4j includes
  5429.     * Console:
  5430.       - 16x11 transparent flags for ch and np, thanks anonim!
  5431.  
  5432. 2009-06-04 zzz
  5433.     * Console:
  5434.       - Update geoip file to June 3 version
  5435.       - Hide some controls if no wrapper on configservice.jsp
  5436.     * I2PTunnel:
  5437.       - Fix bug where delayed-open and close-on-idle tunnels would
  5438.         use a different tunnel pool instead of building their own
  5439.       - Add standby indication to web page
  5440.     * NetDb:
  5441.       - Try to talk directly to a floodfill if we don't know enough,
  5442.         to help integrate more quickly
  5443.       - Change a no-floodfill error to a warn
  5444.     * NetDb Stats:
  5445.       - Average TX and RX bw stats for additional anonymity,
  5446.         effective in next release
  5447.     * Reseed:
  5448.       - Limit to 200 pulled randomly from the full fetched list
  5449.     * Transport:
  5450.       - Increase default bw for new installs to 96/40
  5451.         (was 64/32). This is as high as we can go upstream
  5452.         without making the default class M.
  5453.     * Watchdog:
  5454.       - Allow disabling by property again
  5455.       - Logging tweaks
  5456.  
  5457. 2009-05-30 zzz
  5458.     * Console:
  5459.       - config.jsp now cause graceful restart
  5460.       - More peers.jsp and profiles.jsp cleanup
  5461.       - tunnels.jsp improvements
  5462.       - Use CSS for form messages
  5463.       - Goodbye nonce spoof messages (sorry jr)
  5464.       - config.jsp: Comment out unused burst config code
  5465.       - Don't forget Serbia!
  5466.       - configadvanced.jsp cleanup
  5467.     * LoadTestManager: Delete, unused
  5468.     * Peer Selector: Make strict order opaque to hash value
  5469.     * SendGarlicMessageJob: Delete, unused
  5470.     * Session Keys:
  5471.       - Don't instantiate unused SessionKeyPersistenceHelper
  5472.       - Use TransientSessionKeyManager instead of PersistentSessionKeyManager
  5473.       - Add generics to TransientSessionKeyManager to help understand it
  5474.       - Change initial session map size to 64 (was 1024)
  5475.       - Prepare for per-destination SessionKeyManagers in ElGamalAESEngine
  5476.       - More stubs for per-destination managers in the client manager
  5477.     * Transports:
  5478.       - Adjust bids when near conn capacity
  5479.     * UDP:
  5480.       - Remove unused stats and test code
  5481.       - Only save IP when it changes
  5482.     * UPnP:
  5483.       - Prevent NPE after ParserException
  5484.       - Tweak to help startup problems?
  5485.       - Retry port forward if it fails
  5486.       - Make peers.jsp display faster
  5487.       - Lengthen POST timeout
  5488.       - More comments
  5489.  
  5490. 2009-05-29 sponge
  5491.     * added big fat start/stop lock into BOB
  5492.     * added zap command to shut down BOB... now we need a way to start it
  5493.       after it stops. :-)
  5494.  
  5495. 2009-05-27 Mathiasdm
  5496.     * Increase sendProcessingTime some more, add a property to configure.
  5497.       Configure with 'router.defaultProcessingTimeThrottle'.
  5498.  
  5499. 2009-05-27 Mathiasdm
  5500.     * Increased sendProcessingTime limits and added testSuccessTime
  5501.       to avoid unwanted throttling
  5502.  
  5503. 2009-05-26 Mathiasdm
  5504.     * Throttling extension by looking at sendProcessingTime
  5505.  
  5506. 2009-05-26 zzz
  5507.     * Console:
  5508.       - configlogging.jsp cleanup
  5509.       - Flags tweak
  5510.     * NetDb:
  5511.       - Don't send our own hash in the don't-include list when exploring
  5512.       - Remove any pending write when removing a RouterInfo
  5513.       - Cleanup to use routerHash()
  5514.     * Streaming: Hopefuly fix infinite loop in the SYN queue handler
  5515.  
  5516. 2009-05-25 zzz
  5517.     * GeoIP:
  5518.       - Save our own location in the config
  5519.       - Check whole netDb at startup (last try didn't work)
  5520.     * NTCP:
  5521.       - Increase routerinfo send frequency to every 90m (was 9h)
  5522.       - Don't send 3 floodfill infos at startup or with routerinfo
  5523.     * Profile Organizer: Increase min fast peers based on
  5524.       number of local destinations
  5525.     * Timestamper:
  5526.       - Use GeoIP to query a closer ntp source if available
  5527.       - Lengthen query time if well-synced
  5528.       - Cleanup
  5529.  
  5530. 2009-05-24 mkvore
  5531.     * SAM: logging some exceptions at INFO level instead of ERROR
  5532.  
  5533. 2009-05-24 zzz
  5534.     * Connection limits / throttle:
  5535.       - Better limits when no inbound TCP
  5536.         (limit inbound and outbound separately)
  5537.       - Don't offer to SSU introduce when near connection limit
  5538.     * Console:
  5539.       - Move flags from icons/ to docs/icons
  5540.       - peers.jsp cleanup
  5541.       - Add readme_zh.html
  5542.     * GeoIP:
  5543.       - Check netDb SSU IP too
  5544.       - Check whole netDb at startup
  5545.     * NTCP: Log who is sending us big messages
  5546.     * UPnP: Move logging from wrapper log to router log
  5547.  
  5548. 2009-05-23 Mathiasdm
  5549.     * Router netDB:
  5550.       - Added flags to the netDB page
  5551.  
  5552. 2009-05-22 Mathiasdm
  5553.     * desktopgui:
  5554.       - Updating works in general config
  5555.       - Switched to Swingworker threads for improved responsiveness
  5556.  
  5557. 2009-05-21 zzz
  5558.     * Router Watchdog:
  5559.       - Log memory stats
  5560.       - Dump threads on linux
  5561.       - Restart after 20 minutes (give the dog his teeth back)
  5562.  
  5563. 2009-05-21 zzz
  5564.     * DataStore:
  5565.       - Adjust interface to have persistent and non-persistent methods,
  5566.         to prepare for partial storage in RAM
  5567.     * ExpireRoutersJob:
  5568.       - Rewrite, not enabled yet
  5569.     * I2Punnel:
  5570.       - Increase eepsite default to 3+0 for new installs
  5571.     * PersistentDataStore:
  5572.       - Cleanup, simplify, and concurrentify
  5573.       - Tweak stats
  5574.       - Remove write limit
  5575.       - Flush to disk on shutdown
  5576.       - Don't write out what we just read in
  5577.     * Router and console:
  5578.       - Bundle geoIP files and flags in new installs,
  5579.         spiff up tunnels.jsp and profiles.jsp.
  5580.         Existing installs can get files with 'ant updaterWIthGeoIP'
  5581.         or in the console docs bundle 'ant consoleDocs'
  5582.       - Use flags for shitlist and peers.jsp too
  5583.       - Tweak tunnels.jsp to show class letters
  5584.       - Hide in-progress details on tunnels.jsp
  5585.       - Add a little color to confignav
  5586.       - Remove 'no skew' message
  5587.       - More message tweaks if no wrapper
  5588.     * TunnelManager:
  5589.       - Remove now-unused isInUse()
  5590.     * UPnP:
  5591.       - Fix up port binding, add some logging on bind fails
  5592.       - Force IPv4 only for binds
  5593.  
  5594. 2009-05-20 Mathiasdm
  5595.     * General configuration enabled by default
  5596.     * General configuration speed tab works completely
  5597.  
  5598. 2009-05-17 zzz
  5599.     * Merge i2p.i2p.zzz.upnp branch
  5600.      * Major changes:
  5601.       - Detect IP with UPnP
  5602.       - Open firewall ports with UPnP
  5603.       - Detect IP by checking local interface addresses
  5604.       - Enable TCP auto-IP and auto-port by default, if UDP status is "OK"
  5605.       - Network configuration page rework
  5606.      * Other stuff:
  5607.       - Remove unused verifyupdate.jsp
  5608.      * Details of the UPnP and related Transport changes:
  5609.       - Add UDP Port configuration to config.jsp
  5610.       - Don't restart router when configs change on config.jsp;
  5611.         simply rebuild router info.
  5612.       - Clean up some port config code in UDP
  5613.       - Implement UPnP enable/disable
  5614.       - Start to rework inbound configuration
  5615.       - Tweak UPnP warning messages
  5616.       - Start of callbacks from UPnP to transports
  5617.       - Tell UDP local addresses at startup
  5618.       - NTCP Port must now be either auto or configured;
  5619.         now defaults to auto; and configured now trumps auto.
  5620.         Port configuration now does not affect whether inbound
  5621.         NTCP is enabled - the host configuration alone can do that.
  5622.       - i2np.ntcp.autoip=true redefined to enable inbound only if
  5623.         SSU reachability is OK. i2np.ntcp.autoip=always for the old behavior.
  5624.         autoip default is now "true".
  5625.         i2np.ntcp.hostname=xxx now trumps i2np.tcp.autoip.
  5626.       - SSU always tells NTCP when status changes.
  5627.       - Implement config save of new IP address options
  5628.       - Implement local address and UPnP configuration of UDP address
  5629.       - Limit received port to 1024 minimum
  5630.       - Simplify bw form
  5631.       - Add config link to UPnP status
  5632.       - Make short timeouts for UPnP HTTP POST so we don't hang when
  5633.         the UPnP device goes away
  5634.       - Fix a bug in UPnP HTTP Server timeout
  5635.       - Make short timeouts for the XML parser so we don't hang when
  5636.         the UPnP device goes away - same as for HTTP POST
  5637.       - Stuff the port mapping requester into a thread so it doesn't
  5638.         delay everything for several seconds
  5639.       - Handle UPnP devices that return IP = 0.0.0.0
  5640.       - Better HTML output when no IP found
  5641.       - Tweak logging
  5642.       - Set Disposer thread name
  5643.       - Keep the control point running after we find an IGD,
  5644.         so that we get notifications of it leaving or
  5645.         coming back or replaced.
  5646.       - Detect UPnP start failure
  5647.       - Sort local addresses
  5648.       - Store last IP for future laptop mode
  5649.       - Subscribe to service, doesn't seem to do anything though,
  5650.         need to test it more
  5651.       - Change UPnP listener port defaults, allow configuration option
  5652.       - Don't notify for non-changed options on config.jsp
  5653.       - Simplify config.jsp some more
  5654.       - No longer use i2np.udp.forceIntroducers
  5655.       - Tweak UDP port qualification
  5656.       - Fix allowing low ports again
  5657.       - Add option to completely disable NTCP, for those behind nasty firewalls
  5658.       - Use SSU reachability rather than global reachability for determining NTCP reachability,
  5659.         since we are now reporting NTCP reachability too
  5660.       - Tweak the config sub-navbar
  5661.       - Don't start UPnP if we have a public interface address
  5662.       - Fix setting IP to a local interface address
  5663.       - Work on the configuration help some more
  5664.       - Rework UDP peers.jsp table a little
  5665.       - Don't let UDP bid on messages that are too long
  5666.       - Clean up the max fragments code in UDP
  5667.  
  5668. 2009-05-17 zzz
  5669.     * Build files:
  5670.       - Remove unneeded ant.jar from package (900KB)
  5671.       - Fail on Jsp compile errors
  5672.     * FloodfillVerifyJob: Don't consider an older search result as verified
  5673.     * logs.jsp: Add link to config
  5674.     * NetDb: Lower the routerinfo expiration again
  5675.     * SusiDNS:
  5676.       - Reduce displayed entries from 300 to 100
  5677.       - Add ability to go forward or back
  5678.       - Make textareas bigger
  5679.       - Clean up file names
  5680.       - Clarify messages about filter and search
  5681.  
  5682. * 2009-05-16  0.7.3 released
  5683.  
  5684. 2009-05-16 Complication
  5685.     * Update versions, package release
  5686.  
  5687. 2009-05-12 sponge
  5688.     * BOB clean up, change println's to _log.warn, bump BOB version
  5689.     * I2PSessionMuxedImpl.java changes as per zzz, and they test OK for me.
  5690.  
  5691. 2009-05-12 mkvore
  5692.     * SAM: fix: warnings when generating javadoc
  5693.  
  5694. 2009-05-11 zzz
  5695.     * Connect client: Fix NPE when used with advanced i2ptunnel features
  5696.     * Context: Don't instantiate unused AdminManager
  5697.     * logs.jsp: Put critical log at the top
  5698.     * NetDb: Don't accept stores of our own LeaseSets or RouterInfo
  5699.  
  5700. 2009-05-11 mkvore
  5701.     * SAM: fix: removed ERROR level logging when a client disconnects
  5702.  
  5703. 2009-05-09 sponge
  5704.     * merge
  5705.  
  5706. 2009-05-09 sponge
  5707.     * fixed OOM on lock (woops! my bad!)
  5708.  
  5709. 2009-05-08 Mathiasdm
  5710.     * desktopgui: moved files to stop polluting the namespace
  5711.           (everything now in net.i2p.desktopgui)
  5712.     * desktopgui: some variable renaming in general configuration
  5713.  
  5714. 2009-05-07 mkvore
  5715.     * SAM: version 3 added
  5716.     * SAM: blocking case corrected on simultaneous client connection (v.1-3)
  5717.  
  5718. 2009-05-07 zzz
  5719.     * Add nibble.i2p to proxy list and hosts.txt
  5720.  
  5721. 2009-05-07 zzz
  5722.     * Addressbook: Name the thread
  5723.     * Console:
  5724.       - More IE button fixes, try harder to not refresh the iframe after shutdown
  5725.       - Disable idle options for streamr client, it will never be
  5726.         idle because it pings the server
  5727.     * Floodfill Monitor: Slow down the volunteers
  5728.     * Throttle: Throttle at 90% so we throttle before we WRED
  5729.  
  5730. 2009-05-06 Mathiasdm
  5731.     * Improvements to popup menu rightclick action
  5732.     * Added general configuration options (still not available by default)
  5733.     * General fixes
  5734.     * Added ant build options (irc says eche|on would like that ;))
  5735.  
  5736. 2009-05-06 sponge
  5737.     * Hopefully the last fixes for BOB.
  5738.     * Fixes to prevent race in client-side I2CP and Notifier.
  5739.  
  5740. 2009-05-03 sponge
  5741.     * More hopeful fixes for BOB.
  5742.     * Added new Robert ID to snark
  5743.  
  5744. 2009-05-01 zzz
  5745.     * Build files:
  5746.       - Fix up susidns build file so it will work with gcj
  5747.       - Add consoleDocs target
  5748.     * Client: Fix race NPE (thanks sponge)
  5749.     * Console: fix ERR-UDP Disabled and Inbound TCP host/port not set
  5750.     * I2CP: Fix race NPE
  5751.     * I2PTunnel:
  5752.       - Try to fix locking to prevent duplicate destinations when using
  5753.         the new option new-dest-on-resume. Still not right for shared clients
  5754.         but should be better for non-shared.
  5755.     * Router console:
  5756.       - Add jbigi and cpu info to logs.jsp
  5757.     * Session key manager:
  5758.       - Log before a hang maybe
  5759.     * URL Launcher:
  5760.       - Launcher on linux was stopping after trying opera, whether it succeeded or failed.
  5761.         Now it keeps going to try firefox, etc. as designed.
  5762.       - Extend default delay from 5s to 15s so it will reliably start
  5763.  
  5764. 2009-04-27 sponge
  5765.     * more BOB fixes, complete with warnings when things go wrong, and
  5766.       success messages when things turn around and go right. Terminates
  5767.       early so that applications wait no more than 10 seconds or so.
  5768.     * Reversed a few earlier patches that caused some odd behavior.
  5769.     * Changed some core println()'s to debugging messages.
  5770.  
  5771. 2009-04-27 zzz
  5772.     * Build files:
  5773.       - New updaterWithJettyFixes target, build it for pkg
  5774.       - Pass compiler args down from top build.xml
  5775.     * GarlicMessageBuilder: Reduce bundled tags to 40 (was 100)
  5776.     * i2psnark: Add Postman2 tracker
  5777.     * I2PTunnel: Allow spaces in dest and proxy lists
  5778.     * NetDb:
  5779.       - Adjust RouterInfo expiration down to control memory usage
  5780.       - Display LeaseSets and RouterInfos on separate console pages
  5781.     * NTCP:
  5782.       - Correct the meanings of the i2np.ntcp.autoip and i2np.ntcp.autoport
  5783.         advanced config. If you have one of these set but not the other, you
  5784.         will have to adjust your configuration on config.jsp.
  5785.     * RouterConsole: iframe tweaks
  5786.     * StatisticsManager: Cleanup
  5787.     * Streaming: Don't let jrandom yell so loud
  5788.     * Tunnel Pool: Don't self-destruct if more than 6 IB tunnels configured
  5789.  
  5790. 2009-04-25 sponge
  5791.     * I2PSessionMuxedImpl atomic fixes
  5792.     * BOB fixes. This should be the final bug wack. Good Luck to everybody!
  5793.  
  5794. 2009-04-23 zzz
  5795.     * Blocklist: cleanup
  5796.     * eepget: handle -h, --help, bad options, etc.
  5797.       (http://forum.i2p/viewtopic.php?p=16261#16261)
  5798.     * Fragmenter: don't re-throw the corrupt fragment IllegalStateException,
  5799.       to limit the damage - root cause still not found
  5800.     * i2psnark: (http://forum.i2p/viewtopic.php?t=3317)
  5801.       - Change file limit to 512 (was 256)
  5802.       - Change size limit to 10GB (was 5GB)
  5803.       - Change request size to 16KB (was 32KB)
  5804.       - Change pipeline to 5 (was 3)
  5805.     * logs.jsp: Move version info to the top
  5806.     * Jetty: Fix temp dir name handling on windows, which was
  5807.       causing susidns not to start
  5808.       (http://forum.i2p/viewtopic.php?t=3364)
  5809.     * NTCP: Prevent IllegalStateException
  5810.     * PeerProfile:
  5811.       - Replace a hot lock with concurrent RW lock
  5812.       - Rewrite ugly IP Restriction code
  5813.       - Also use transport IP in restriction code
  5814.     * RouterConsole: Make summary bar a refreshing iframe
  5815.     * Transport: Start the previously unused CleanupUnreachable
  5816.  
  5817. 2009-04-21 sponge
  5818.     * Code janitor work, basic corrections involving @Override, and
  5819.       appling final where it is important. Also fixed some equals methods
  5820.       and commented places that need fixing.
  5821.  
  5822. 2009-04-18 Complication
  5823.     * Fix typo in "news.xml", no build number increase.
  5824.  
  5825. * 2009-04-18  0.7.2 released
  5826.  
  5827. 2009-04-18 Complication
  5828.     * Update versions, package release
  5829.  
  5830. 2009-04-17 sponge
  5831.     * fixed setIP, just be sure to distclean before building :-)
  5832.     * more lint taken care of as well.
  5833.  
  5834. 2009-04-17 sponge
  5835.     * setIP wants to be a static method in the class, but it produces
  5836.       warnings about it being static from other code.
  5837.  
  5838. 2009-04-17 sponge
  5839.     * Catch NPE in NTCP.
  5840.       This possibly augments fix 2009-04-11 welterde below.
  5841.     * Various LINT on NTCP sources, and removal of space-wasting
  5842.       spaces at end of lines in sources touched.
  5843.  
  5844. 2009-04-13 Mathiasdm
  5845.     * Bugfix on tray icon updating
  5846.     * Some more work on the general configuration menu
  5847.       (currently not added to the tray icon menu yet, needs more work)
  5848.     * Tweaked the desktopgui logo
  5849.  
  5850. 2009-04-13 Mathiasdm
  5851.     * Added I2P version and GUI version to desktopgui
  5852.     * Tweaks to the tray icon menu
  5853.     * Some starting work on a GUI general configuration menu
  5854.     * Bugfix allowing spaces in directory structure
  5855.  
  5856. 2009-04-13 welterde
  5857.     * small fix in the eepproxy
  5858.  
  5859. 2009-04-11 welterde
  5860.     * fixed NPE in NTCP transport
  5861.  
  5862. 2009-04-11 sponge
  5863.     * i2ptunnel janitorial work and fixes on most locks.
  5864.       Some locks still need work, and are marked with LINT in the comment.
  5865.       Just grep for "LINT" to see where the remaining places are.
  5866.  
  5867. 2009-04-10 sponge
  5868.     * More BOB threadgroup fixes, plus debug dump when things go wrong.
  5869.     * Fixes to streaminglib, I2CP, which are related to the TG problem.
  5870.     * JavaDocs fixups.
  5871.  
  5872. 2009-04-08 sponge
  5873.     * More hopeful fixups to the infamous orpahned tunnel problem. *Sigh*
  5874.  
  5875. 2009-04-08 zzz
  5876.     * IPV6/localhost:
  5877.       - Enable IPv6 stack in the JVM, hopefully won't break anything
  5878.       - Patch Jetty to support binding to IPv6 addresses
  5879.       - Allow multiple bind addresses for the router console
  5880.         in the clients.config file; for new installs the
  5881.         default is now "127.0.0.1,::1"
  5882.       - Change most instances of "localhost" to "127.0.0.1"
  5883.         throughout the code
  5884.     * Router:
  5885.       - Move some classes to private static inner
  5886.  
  5887. 2009-04-07 sponge
  5888.     * BOB prevent jvac from optimizing out thread-group code from -10
  5889.  
  5890. 2009-04-07 zzz
  5891.     * NTCP: Prevent occasional NPE introduced in -4
  5892.     * streamr: Synchronize DatagramMaker
  5893.  
  5894. 2009-04-07 sponge
  5895.     * SimpleTimer2, SimpleScheduler fixed so that the threads all run from
  5896.       The main threadgroup, not in the current possible child threadgroup.
  5897.       So long as any SimpleTimer2/SimpleScheduler is started *BEFORE* any
  5898.       child threadgroups, the constructors are threadgroup safe. What would
  5899.       be super cool is if they were to be all jailed within thier very own
  5900.       threadgroup too, but, I2P isn't up to the task of this yet.
  5901.     * Fixes to BOB to ensure the above is true.
  5902.  
  5903. 2009-04-06 sponge
  5904.     * Debugging to make SimpleTimer2 and SimpleScheduler easier to debug.
  5905.     * Fix for the config files in the GUI from mathiasdm
  5906.  
  5907. 2009-04-04 sponge
  5908.     * Hopeful fixups to the infamous orpahned tunnel problem.
  5909.     * BOB now 0.0.5
  5910.  
  5911. 2009-04-04 zzz
  5912.     * NTCP: Don't bid on messages too big to handle
  5913.  
  5914. 2009-04-03 zzz
  5915.     * Console:
  5916.       - Fix bug with IE buttons not working,
  5917.         because it sends the label instead of the value
  5918.       - Display version of downloaded update
  5919.     * Update:
  5920.       - Change default to "Download and verify"
  5921.       - Change news fetch default to 24h (was 12h)
  5922.  
  5923. 2009-04-03 sponge
  5924.     * Fix broken dependencies for BOB.jar
  5925.     * Router build version incremented to 5.
  5926.  
  5927. 2009-04-02 zzz
  5928.     * Profiles:
  5929.       - Remove unused calculators and RateStats:
  5930.         CapacityCalculator, StrictSpeedCalculator, IsFailingCalculator;
  5931.         sendFailureSize, processSuccessRate, processfailureRate, commErrorRate,
  5932.         tunnelTestResponseTimeSlow
  5933.       - Reduced number of Rates in these RateStats:
  5934.         sendSuccessSize, receiveSize, rejectRate, failRate
  5935.       - ~5KB/profile savings total
  5936.       - Deflate speed calculation once an hour instead of once a day,
  5937.         to improve fast tier selection
  5938.       - Remove dup comment in persisted files
  5939.     * StatisticsManager - effective in 0.7.2:
  5940.       - Spoof uptime to 90m for all
  5941.       - Change tunnel stats from 10m to 60m
  5942.     * Transport:
  5943.       - Maintain a router hash -> IP map in transport,
  5944.         to support additional IP checks (unused for now)
  5945.       - Catch error on pre-2.6 kernels
  5946.       - Some concurrent conversion
  5947.       - Fix an HTML error on peers.jsp
  5948.  
  5949. 2009-04-01 zzz
  5950.     * I2PTunnel: Fix tunnel close
  5951.       http://forum.i2p/viewtopic.php?t=3231
  5952.  
  5953. 2009-03-30 zzz
  5954.     * I2CP:
  5955.       - Implement BandwidthLimitsMessage
  5956.       - Have i2psnark use new message, remove
  5957.         build dependency on router
  5958.     * Peer Selection:
  5959.       - Limit peers to a max % of all tunnels with
  5960.         router.maxTunnelPercentage=nn, default 33
  5961.       - Add chart to tunnels.jsp to see results
  5962.  
  5963. * 2009-03-29  0.7.1 released
  5964.  
  5965. 2009-03-29 Complication
  5966.     * Update versions, package release
  5967.  
  5968. 2009-03-27 zzz
  5969.     * Add readme_fr.html
  5970.     * License splash update
  5971.     * Catch rare TunnelGatewayMessage AIOOB, root cause unknown
  5972.  
  5973. 2009-03-24 zzz
  5974.     * I2PTunnel:
  5975.       - Add some warnings about new features
  5976.       - Fix encrypted leasesets broken in about -4
  5977.       - Suppress log error on manual stop
  5978.       - Fix NPE on close of a tunnel not open yet
  5979.     * Transport:
  5980.       - Increase default bw to 64/32, burst 80/40
  5981.     * Tunnels: Change some fragmentation errors to warns
  5982.  
  5983. 2009-03-16 zzz
  5984.     * help.jsp: Add some
  5985.     * I2PTunnel: Cleanup
  5986.     * I2PTunnelHTTPClient: Fix NPE on delayed open
  5987.     * I2PTunnelHTTPServer: Maybe catch an NPE
  5988.     * SOCKS: Allow .onion addresses for onioncat testing
  5989.     * Tunnel: Catch a rare AIOOB
  5990.  
  5991. 2009-03-09 zzz
  5992.     * Client:
  5993.       - Clean up retry code
  5994.       - Bring I2CP listen error to the summary bar
  5995.         http://forum.i2p/viewtopic.php?t=3133
  5996.     * I2PSnark: Remove the http from the add torrent box
  5997.     * I2PTunnel:
  5998.       - Add persistent key option for standard and IRC clients
  5999.       - Add delay-open option for clients
  6000.       - Get regenerate-dest-on-reconnect working
  6001.       - Add default key file name
  6002.       - Add link to addressbook
  6003.       - I2PSink: Send protocol byte
  6004.     * OCMOSJ:
  6005.       - Change from 5% reply requests to at least
  6006.         once per minute, in hopes of reducing IRC drops
  6007.       - More clean up of the cache cleaning
  6008.     * Routerconsole: Don't OOM configpeer.jsp on huge blocklists
  6009.  
  6010. 2009-02-26 zzz
  6011.     * I2CP Client: Add support for muxing
  6012.     * I2PTunnel:
  6013.       - Add new IRCServer tunnel type
  6014.       - Add SOCKS 4/4a support
  6015.       - Catch OOMs in HTTPServer
  6016.       - Name the IRCClient filter threads
  6017.       - Port Streamr to I2PTunnel
  6018.       - The beginnings of SOCKS UDP support
  6019.     * Naming: Add reverse lookup by hash
  6020.     * OCMOSJ: Clean up the cache cleaning
  6021.     * Router: Move addShutdownTask from Router to I2PAppContext
  6022.       so that apps can register more easily
  6023.     * Routerconsole:
  6024.       - Thread hard shutdown and restart requests from the routerconsole,
  6025.         and add a delay even if no tunnels, to allow time for a UI response
  6026.       - Sort the summary bar destinations
  6027.       - Move dest-to-hash converter to new helper class so we can
  6028.         use it in i2ptunnel
  6029.  
  6030. 2009-02-22 sponge
  6031.     * BOB: Orphan tunnel issue fix, bump BOB version
  6032.     * bump to Build 6
  6033.  
  6034. 2009-02-16 zzz
  6035.     * Streaming lib: Plug timer leak, don't send keepalives
  6036.       after close, don't disconnect hard after close
  6037.  
  6038. 2009-02-15 zzz
  6039.     * Add licenses to all packages
  6040.     * I2PSession: Concurrent _messagesReceived
  6041.     * i2psnark: tmp file removal try #3
  6042.     * I2PTunnel:
  6043.       - Don't buffer POST data in HTTPClient
  6044.       - Display destination even when stopped
  6045.       - Enable key generation, dest modification, and
  6046.         hashcash estimation in the GUI
  6047.       - Add new CONNECT client
  6048.     * NetDb: Enforce 60s minimum leaseset publish interval
  6049.     * Streaming lib:
  6050.       - Plug connection leak
  6051.       - Move ConEvent from SimpleTimer to SimpleScheduler
  6052.       - Move RetransmissionTimer (ResendPacketEvent)
  6053.         from SimpleTimer to new SimpleTimer2
  6054.       - Move ActivityTimer and Flusher from SimpleTimer to RetransmissionTimer
  6055.       - SimpleTimer2 allows specifying "fuzz" to reduce
  6056.         timer queue churn further
  6057.     * Susidns: Fix save of new dest broken in 0.7
  6058.     * TunnelPool:
  6059.       - Allow leasesets with reduced leases for robustness and startup speed
  6060.       - Plug in-progress build leak
  6061.  
  6062. 2009-02-07 zzz
  6063.     * ClientConnectionRunner, Shitlist, TunnelDispatcher:
  6064.       Update using concurrent
  6065.     * Streaming ConnectionHandler: Bound SYN queue and
  6066.       use concurrent to prevent blowup
  6067.     * HTTP Proxy: Fix error msg for b32 addresses
  6068.     * I2CP: Implement optional reduce tunnels on idle - not hooked
  6069.       in to i2ptunnel GUI yet - still needs tweaks
  6070.     * I2CP MessageReader: Prevent rare NPE
  6071.     * I2CP Writer: Rewrite using concurrent
  6072.     * i2psnark: Add torrent and connection count
  6073.     * I2PTunnel & I2CP:
  6074.       - Fix tunnel reduction/restore, hook in the GUI
  6075.       - Hook leaseset encryption into the GUI
  6076.       - Implement saves for all the new stuff
  6077.       - Add cancel button
  6078.       - Add b32 display for non-http servers
  6079.       - Prep for CONNECT
  6080.       - Fix error msg when connection goes away
  6081.     * NetDb: Remove all DataPublisher stuff
  6082.     * Wrapper: Remove dup timeout
  6083.  
  6084. 2009-02-02 sponge
  6085.     * Final? cleanups to Slackbuilds.
  6086.     * ant target for Slackbuilds.
  6087.  
  6088. 2009-02-01 sponge
  6089.     * Slackbuild files... if we can have them for Debian, why not :-)
  6090.  
  6091. 2009-02-01 zzz
  6092.     * Convert some inner classes to static (findbugs)
  6093.     * DataHelper.readLong(): Was returning -1 on EOF instead
  6094.       of throwing exception
  6095.     * i2psnark: Increase tunnels and pipeline to 3
  6096.     * NTCP: Use a java.util.concurrent execution queue instead of
  6097.       SimpleTimer for afterSend() to reduce lock contention
  6098.     * Remove source from susimail.war, susidns.war, i2ptunnel.war (85KB)
  6099.     * Routerconsole:
  6100.       - Move common methods to new HelperBase class
  6101.       - Make reseed link a button
  6102.     * SimpleScheduler: New replacement for SimpleTimer when events
  6103.       will not be rescheduled or cancelled, to reduce SimpleTimer
  6104.       lock contention
  6105.     * Tunnel Pool:
  6106.       - Remove tunnel from participating if can't contact next hop
  6107.       - Fail outbound build faster if can't contact first hop
  6108.     * Wrapper: Remove dup timeout
  6109.  
  6110. 2009-01-31 dream
  6111.     * Debian files
  6112.  
  6113. 2009-01-31 sponge
  6114.     * One line BOB discarded interger fix
  6115.       (not that it mattered at this point)
  6116.  
  6117. 2009-01-25 zzz
  6118.     * Build files:
  6119.       - Don't bundle unneeded XML parser xercesImpl.jar (1MB)
  6120.       - Don't include unneeded stuff in Copy, Delete, Exec.jar (300KB)
  6121.     * I2CP:
  6122.       Implement new I2CP message ReconfigureSessionMessage.
  6123.       Will be used for tunnel reduction.
  6124.     * I2PTunnel Edit Pages:
  6125.       - Change default length to 2+0
  6126.       - Cleanup helper code
  6127.       - Prevent null spoofhost
  6128.       - Stub out the following new options (C=client, S=server):
  6129.         + Access list (S)
  6130.         + Certificate type (S)
  6131.         + Encrypted LeaseSet (S)
  6132.         + New dest on idle restart (C)
  6133.         + Tunnel closure on idle (C)
  6134.         + Tunnel reduction on idle (C,S)
  6135.     * I2PTunnel Socks:
  6136.       - Add support for SOCKS to GUI
  6137.       - Don't NPE on SOCKS 4, just close
  6138.       - Don't have SOCKS build a new dest for every request
  6139.       - Beginnings of SOCKS configuration by port
  6140.       - HTML error msg for attempted HTTP access
  6141.     * LeaseSet: Add encrypt/decrypt methods
  6142.     * netdb.jsp: Don't show stats by default
  6143.     * OCMOSJ: Bundle a reply when we switch tunnel or lease,
  6144.       to detect failure sooner
  6145.     * PublishLocalRouterInfoJob:
  6146.       - Delay for 5m at startup
  6147.       - Run every 20m (was 7.5m)
  6148.     * RebuildRouterInfoJob: Don't run it
  6149.     * Router: Add a keyring for decrypting leases
  6150.     * Routerconsole: Add configkeyring.jsp
  6151.     * SummaryHelper.getTransferred() move to DataHelper,
  6152.       rename to formatSize(), use on tunnels.jsp
  6153.     * Streaming, I2CP, Client Message sending:
  6154.       Pass message timeout through new I2CP message
  6155.       SendMessageExpiresMessage, so that the router
  6156.       uses the same expiration as the streaming lib.
  6157.       Should help reliability.
  6158.     * Streaming: TCB control block sharing
  6159.  
  6160. * 2009-01-24  0.7 released
  6161.  
  6162. 2009-01-24 Complication
  6163.     * Update versions, package release
  6164.  
  6165. 2009-01-17 zzz
  6166.     * NTCP: Prevent two NTCP Pumpers
  6167.  
  6168. 2009-01-14 zzz
  6169.     * config.jsp: Fix burst seconds display
  6170.     * HTTPClient: Fix per-tunnel settings for i2cp.gzip and
  6171.       i2ptunnel.httpclient.send* (thx tino)
  6172.     * i2psnark:
  6173.       - Fix double completion message
  6174.       - Add crstrack
  6175.     * initialNews.xml: Add .de (thx echelon)
  6176.     * Message: Always distribute an inbound msg back out
  6177.       a tunnel to foil a possible latency-measuring attack
  6178.       (welterde)
  6179.     * Naming:
  6180.       - Change base32 names to *.b32.i2p
  6181.       - Add i2p.naming.hostsTxt.useB32 config
  6182.     * profiles.jsp: Remove 1m column
  6183.     * SAM: Don't build tests by default
  6184.     * Streaming:
  6185.       - Prevent a rare NPE
  6186.       - Reduce initial RTT to 8s (was 10s)
  6187.     * tunnels.jsp: Add netdb links
  6188.  
  6189. 2009-01-08 zzz
  6190.     * addressbook: Prevent Base32 hostnames
  6191.     * build.xml: Remove readme_xx.html from updater
  6192.     * configtunnels.jsp: Fix display of outbound backup count
  6193.     * configupdate.jsp: Fix corruption of update URLs
  6194.     * i2psnark: Recognize Robert 0.3 and 4
  6195.     * ExploreJob/SearchJob - fix brokenness:
  6196.       - Give each search a minimum of time even at the end
  6197.       - Fix ExploreJob exclude peer list
  6198.       - Always add floodfills to exclude peer list
  6199.       - Don't queue keys for exploration or run ExploreJob
  6200.         if floodfill
  6201.       - Allow floodfills to return non-floodfills in
  6202.         a DSRM msg so exploration works
  6203.     * ExploreJob/SearchJob - more fixes:
  6204.       - Disable ExploreKeySelectorJob completely, just have
  6205.         StartExplorersJob select a random key if queue is empty
  6206.       - Add netDb.alwaysQuery=[B64Hash] for debugging
  6207.       - Queue results of exploration for more exploration
  6208.       - Floodfills periodically shuffle their KBuckets, and
  6209.         FloodfillPeerSelector sorts more keys, so that
  6210.         exploration works well
  6211.     * Shitlist: Reduce max time to 30m (was 60m)
  6212.     * Streaming:
  6213.       - Reduce default initial window size from 12 to 6,
  6214.          to account for the MTU increase in the last release
  6215.          and try to limit initial packet loss
  6216.       - Reduce fast retransmit threshold from 3 to 2
  6217.     * Transport: Don't shitlist a peer if we are at our
  6218.       connection limit
  6219.  
  6220. 2009-01-03 zzz
  6221.     * config.jsp: Move the buttons up
  6222.     * configservice.jsp: Clean up and fix the broken (?)
  6223.       browser launch configuration
  6224.     * i2psnark:
  6225.       - Try again to remove the i2psnarkurl files on shutdown
  6226.       - Sort torrents with a locale-based sort
  6227.     * NetDb:
  6228.       - Expire routers with introducers after 90m.
  6229.         This should improve reachability to firewalled routers
  6230.         by keeping introducer info current.
  6231.       - Expire routers with no addresses after 90m.
  6232.       - Convert to java concurrent
  6233.     * Stats: Add router.memoryUsed, graph by default
  6234.     * Summary bar: Remove spurious UDP warning on startup
  6235.     * UpdateHandler: Make extensible for upcoming
  6236.       torrent updater
  6237.  
  6238. 2008-12-15 zzz
  6239.     * Remove apps/ bogobot jdom pants q rome stasher syndie
  6240.  
  6241. 2008-12-14 zzz
  6242.     * Contexts: Add int getProperty(String prop, int default)
  6243.     * I2PAppThread: Constructor fix
  6244.     * More split classes into their own files for mkvore
  6245.     * Streaming: Don't build test cases by default
  6246.     * Summary bar: Replace links with buttons
  6247.     * Transport:
  6248.       - Cleanup max connections code
  6249.       - Add i2np.udp.maxConnections
  6250.       - Set max connections based on share bandwidth
  6251.       - Add haveCapacity() that can be used for connection
  6252.         throttling in the router
  6253.       - Reject IBGW/OBEP requests when near connection limit
  6254.       - Reduce idle timeout when near connection limit
  6255.     * Tunnel request handler:
  6256.       - Require tunnel.dropLoad* stats
  6257.       - Speed up request loop
  6258.     * I2CP, HostsTxtNamingService, I2PTunnel:
  6259.       Implement Base32 Hash hostnames, via the naming service.
  6260.       Names are of the form [52-characters].i2p, where
  6261.       the 52 characters are the Base32 representation of our
  6262.       256-byte hash. The client requests a lookup of the hash
  6263.       via a brief I2CP session using new I2CP request/reply
  6264.       messages. The router looks up the leaseset for the hash
  6265.       to convert the hash to a dest. Convert the I2PTunnel
  6266.       'preview' links to use Base32 hostnames as a
  6267.       demonstration.
  6268.  
  6269. 2008-12-08 zzz
  6270.     * ATalk: Move from core to apps
  6271.     * Blocklists: enable by default, include blocklist file
  6272.       in new installs
  6273.     * Build: Add findbugs target
  6274.     * Cleanup of removed netdb stats
  6275.     * Console:
  6276.       - Don't display restart button if no wrapper
  6277.       - Remove PRNG stats
  6278.     * Eepsite: Disable jetty webapps by default for new installs
  6279.     * i2psnark:
  6280.       - Add default i2psnark.config for new installs
  6281.       - Remove wishlist link
  6282.       - Recognize robert and i2psnarkxl clients
  6283.       - Increase max files to 256
  6284.     * Increase standalone heap size to 128MB
  6285.     * NetDb: Split classes into their own files for mkvore
  6286.     * PeerManager: Fix NPE on early shutdown
  6287.     * SusiDNS: Add textareas
  6288.     * Transport:
  6289.       - Fixes, avoid NPEs, and cleanups when NTCP and/or UDP transports disabled
  6290.       - More TCP removal cleanup
  6291.       - Clean up bandwidth limiting, centralize defaults
  6292.       - Force burst to be >= limit
  6293.       - Increase default bw to 48/24, burst 64/32
  6294.     * Tunnels: Avoid two NPEs on corrupt fragments
  6295.  
  6296. 2008-12-01 zzz
  6297.     * i2psnark:
  6298.       - Refactor to allow running a single Snark without a SnarkManager again,
  6299.         by moving some things from SnarkManager to I2PSnarkUtil,
  6300.         having Snark call completeListener callbacks,
  6301.         and having Storage call storageListener callbacks.
  6302.         This is in preparation for using Snark for router updates.
  6303.         Step 2 is to allow multiple I2PSnarkUtil instances.
  6304.       - Big rewrite of Storage to open file descriptors on demand, and
  6305.         close them when unused, so we can support large numbers of torrents.
  6306.  
  6307.     * i2psnark:
  6308.       - Remove static instances of I2PSnarkUtil, ConnectionAcceptor,
  6309.         and PeerCoordinatorSet
  6310.       - Convert static classes in Snark to listeners
  6311.       - Fix Snark to work in single torrent mode again
  6312.       - Should now work with multiple single Snarks
  6313.  
  6314.     * i2psnark:
  6315.       - Use new I2PAppThread that does not call global listeners on OOM,
  6316.         so that OOMing apps will not shutdown the whole router.
  6317.  
  6318.     * i2psnark:
  6319.       - Don't create SnarkManager instance until first call,
  6320.         so it doesn't create the i2psnark dir, read the config,
  6321.         etc., for single Snark instances.
  6322.       - Don't read i2psnark.config twice; fix setting
  6323.         i2psnark.dir
  6324.       - More Snark constructor changes for calling from router
  6325.       - Make max connections per torrent configurable
  6326.  
  6327.     * SAM:
  6328.       - Use new I2PAppThread that does not call global listeners on OOM,
  6329.         so that OOMing SAM will not shutdown the whole router.
  6330.  
  6331. * 2008-12-01  0.6.5 released
  6332.  
  6333. 2008-12-01 Complication
  6334.     * Update versions, package release, fix typo in comment
  6335.  
  6336. 2008-11-26 zzz
  6337.     * Fix Windows UrlLauncher
  6338.  
  6339. 2008-11-21 zzz
  6340.     * Cache DNS and negative DNS for 5m (was 1m and forever)
  6341.     * Delay shitlist cleaner at startup
  6342.     * Strip wrapper properties from client config
  6343.     * Define multiple cert type
  6344.     * Prohibit negative maxSends in streaming
  6345.     * HTML fixup on configtunnels.jsp
  6346.     * Increase wrapper exit timeout from default 15s to 30s
  6347.  
  6348. 2008-11-20 zzz
  6349.     * I2PTunnel: Handle missing fields in edit pages better
  6350.     * Move DummyNetworkDatabaseFacade to his own file
  6351.       to help the build dependencies
  6352.     * Drop old tcp transport and old tunnel build sources
  6353.     * EepGet:
  6354.       - Better handling of 504 gateway timeout
  6355.         (keep going up to limit of retry count rather
  6356.          than just one more partial fetch)
  6357.       - Add -t cmd line option for timeout
  6358.       - Better handling of 403, 409, 503 errors
  6359.       - Don't keep going after unknown return code
  6360.       - Don't delay before exiting after a failure
  6361.  
  6362. 2008-11-15 zzz
  6363.     * Build files:
  6364.       - Don't die if depend not available
  6365.       - Only verify Jetty hash once
  6366.       - Add streaming lib tests to depend task
  6367.     * I2CP Compression:
  6368.       - Add i2cp.gzip option (default true)
  6369.       - Add compression stats
  6370.       - Don't bother compressing if really small
  6371.  
  6372. 2008-11-13 zzz
  6373.     * Streaming:
  6374.       - Add more info to Connection.toString() for debugging
  6375.       - Fix lifetimeMessages{Sent,Received} stats
  6376.       - Reduce RTT damping to 0.875 (was 0.9)
  6377.       - Add a stream.con.initialRTT.{in,out} stats
  6378.     * Build files:
  6379.       - Use the depend task with caching for more accurate dependencies
  6380.       - Make sure the routerconsole gets the latest router version
  6381.       - Fix addressbook repeated builds
  6382.     * HTTPClient: Add config options to pass Via, Referer,
  6383.       and User-Agent through
  6384.     * Blocklists: Fix lists with hashes only
  6385.  
  6386. 2008-11-11 zzz
  6387.     * Streaming - Fix several bugs and improve performance
  6388.       when the initial data is larger than one MTU,
  6389.       e.g. HTTP GETs with large URLs, CGI params or cookies,
  6390.       or large HTTP POSTS:
  6391.       - Don't reject additional packets received without a
  6392.         send stream ID (i.e. sent before the SYN ACK was received)
  6393.       - Put unknown non-SYN packets on the SYN queue also
  6394.         so they won't be rejected
  6395.       - Reduce flusher delay to 250ms (was 500)
  6396.       - Flush unless window is full (was window is non-empty)
  6397.     * Streaming: Enforce a minimum MTU of 512
  6398.     * I2PTunnel: Change "interactive" max window size to 16 (was 1)
  6399.     * NetDb: Fix a deadlock caused by last checkin
  6400.  
  6401. 2008-11-09 zzz
  6402.     * build.xml: Build speedups:
  6403.       - Don't distclean in the updaterRouter target
  6404.       - Don't make prepUpdate and prepupdateSmall depend
  6405.         on distclean
  6406.       - Don't make susimail build always clean
  6407.       - Make pkg depend on distclean to be sure
  6408.       - Clean out more routerconsole and susidns files in 'ant clean'
  6409.       - i2ptunnel, routerconsole, susidns:
  6410.         Only build WEB-INF when necessary
  6411.       - systray: Only build jar when necessary
  6412.       - Don't build i2psnark standalone for the updater target
  6413.     * configclients.jsp: Provide a link when starting a webapp
  6414.     * configtunnels.jsp:
  6415.       - Code cleanup
  6416.       - Add 4-hop option
  6417.       - Remove +/- 0-2 option
  6418.     * javadoc: Add some more package.html files
  6419.     * I2PTunnelHTTPServer: Put the requestor's dest hash
  6420.       in the request headers
  6421.     * Jetty: Add a I2PRequestLog class to log request dest hash
  6422.     * NetDb: Don't drop routerInfos if we have connectivity
  6423.       issues or other problems
  6424.     * NTCP: Lower idle timeout to 10m (was 15m)
  6425.     * Routerconsole: Replace wtf msg w/ something nicer
  6426.     * Tunnel BuildHandler: add config router.participantOnly,
  6427.       set to true to refuse OBEP and IBGW roles, should
  6428.       reduce connections significantly if set.
  6429.  
  6430. 2008-11-02 zzz
  6431.     * Certificates:
  6432.       - Add a signed Certificate type
  6433.       - Add a main() to PrivateKeyFile to generate
  6434.         Destinations with various Certificate types
  6435.       - Add a VerifiedDestination class to check Certificates
  6436.         of various types
  6437.       - Add a HashCash library from http://www.nettgryppa.com/code/
  6438.         (no distribution restrictions)
  6439.       - Allow non-null Certificates in addressbook
  6440.     * I2PTunnel: Move some wayward stats to the I2PTunnel group
  6441.     * NamingServices: Implement caching in the abstract class
  6442.     * NewsFetcher: Fix last updated time
  6443.     * Streaming: Increase MTU to 1730 (was 960);
  6444.       see ConnectionOptions.java for analysis
  6445.     * Throttle: Reduce default max tunnels to 2000 (was 2500)
  6446.     * clients.config: Disable SAM and BOB by default for new installs
  6447.  
  6448. 2008-10-26 zzz
  6449.     * config.jsp: Add more help
  6450.     * peers.jsp: Clean up 'Listening on' formatting
  6451.     * profiles.jsp: Don't override locale number format
  6452.     * netdb.jsp: Indicate if hidden
  6453.     * summary.jsp: Indicate if hidden
  6454.     * i2ptunnel/edit.jsp: Disable word wrap in textarea
  6455.     * Blocklist: Change logging from ERROR to WARN
  6456.     * FloodfillMonitor:
  6457.        - Fix ff count (we forgot ourselves)
  6458.        - Don't become ff if hidden
  6459.     * HandleFloodfillDatabaseLookupMessageJob:
  6460.       Send back your routerinfo with the DSRM if not ff to
  6461.       spread the word that you aren't ff anymore
  6462.     * I2Ping:
  6463.        - Add -n count option
  6464.        - Add rtt output
  6465.        - Enhance help
  6466.        - Fix option handling
  6467.     * More findbugs cleanups
  6468.     * NetDb:
  6469.        - Fix behavior when router.isHidden=true
  6470.        - Delay StartExplorersJob for 10m at startup
  6471.        - Update dbLookup profile stats in FloodOnlySearchJob
  6472.          and FloodfillVerifyStoreJob
  6473.        - Fix response time store in profile in SearchJob
  6474.     * Stats:
  6475.        - Remove unused tunnel.buildSuccess and tunnel.buildFailure
  6476.        - Remove tunnel.buildRequestTime and 5m rate stats from
  6477.          netDb, effective in next release
  6478.     * UDP:
  6479.        - Don't do peer tests when hidden
  6480.        - Don't offer to introduce when hidden
  6481.        - Don't continually rebuild routerInfo when hidden
  6482.        - Don't continually rebuild routerInfo when
  6483.          i2np.udp.internalPort is set but i2np.udp.port is not
  6484.        - Remove some unused functions
  6485.  
  6486. 2008-10-20 zzz
  6487.     * configclients.jsp: Handle clients with no args
  6488.     * index.jsp: Add readme_nl.html (thanks mathiasdm!),
  6489.       readme_sv.html (thanks hottuna!)
  6490.     * Big findbugs cleanup
  6491.     * Client: Prevent a race causing session reconnect
  6492.     * FloodfillMonitor:
  6493.        - Don't become ff if clock skew is high
  6494.        - Rebuild routerinfo immediately when ff status changes
  6495.     * FloodOnlySearchJob: Recover better if the floodfills
  6496.       you know are no longer floodfill or are gone
  6497.     * Installer: Bump min JRE to 1.5
  6498.     * ShellCommand: Fix main()
  6499.  
  6500. 2008-10-14 zzz
  6501.     * index.jsp: Add multilanguage support for readme.html;
  6502.       add readme_de.html (thanks devzero!)
  6503.     * configupdate.jsp, configadvanced.jsp:
  6504.       Disable word wrap in textareas
  6505.     * install*.txt: Update for 1.5
  6506.     * summary.jsp: Remove failing peer count
  6507.  
  6508. 2008-10-10 zzz
  6509.     * Profiles: Reduce reject penalty in
  6510.       capacity calculation to avoid a congestion collapse
  6511.     * Throttle: Change reject to BANDWIDTH from CRIT on shutdown
  6512.       for improved anonymity
  6513.     * Tunnels: Implement random discard to enforce share limit
  6514.     * Tunnel Tests: Add time for outbound delay, to avoid
  6515.       congestion collapse
  6516.     * UDPPacketReader: Adjust logging
  6517.     * build files: Change to source=1.5, target=1.5
  6518.     * configpeer.jsp: Table cleanup
  6519.     * i2psnark: Change default tunnel length from 1+1 to 2+0
  6520.     * peers.jsp: Change <,> to in,out for UDP
  6521.  
  6522. 2008-10-09 sponge
  6523.     * Update version to -3
  6524.     * BOB database threadlocking fixes
  6525.  
  6526. 2008-10-08 sponge
  6527.     * Update version to -2
  6528.     * Bugfixes and additions to BOB
  6529.  
  6530. 2008-10-07 sponge
  6531.     * Bugfixes and additions to streaming.
  6532.     * Added SimpleStore class in utils.
  6533.     * Fixed SimpleTimer class to allow exit.
  6534.     * BOB (Basic Open Bridge) added.
  6535.  
  6536. * 2008-10-05  0.6.4 released
  6537.  
  6538. 2008-10-05 Complication
  6539.     * Update versions, package release
  6540.  
  6541. 2008-09-29 zzz
  6542.     * i2psnark: Add codevoid link, remove mastertracker
  6543.  
  6544. 2008-09-23 zzz
  6545.     * config.jsp: Add some reachability help
  6546.     * configpeer.jsp: Add blocklist info
  6547.     * help.jsp: Add link to German FAQ
  6548.     * tunnels.jsp: Fix inactive participating count
  6549.     * SearchReplyJob: Don't look up references to shitlisted peers
  6550.     * TunnelPeerSelector: Avoid a peer for 20s after a reject or timeout
  6551.  
  6552. 2008-09-20 zzz
  6553.     * NetDb: Fix the totally broken "check new routers against blocklist"
  6554.       code from 3 checkins ago
  6555.     * tunnels.jsp: Sort participating tunnels by usage, display rate
  6556.  
  6557. 2008-09-19 zzz
  6558.     * Tunnels:
  6559.       - Add missing message accounting for inbound gateways,
  6560.         we were underestimating participating traffic because of it,
  6561.         and the tunnels were classified "inactive"
  6562.       - Add participating tunnel role on tunnels.jsp
  6563.  
  6564. 2008-09-18 zzz
  6565.     * Throttle:
  6566.       - Correctly check inbound and outbound total bw limits separately
  6567.       - Fix up and actually use the tunnel.participatingMessageCount stat,
  6568.         favor it if lower than the total bw stat, so that
  6569.         client traffic isn't included for throttle decisions
  6570.       - Reduce min message count from 60 to 40
  6571.     * Tunnel Dispatcher:
  6572.       - Add tunnel.participatingBandwidth stat
  6573.       - Remove all 3h and 24h stats
  6574.  
  6575. 2008-09-15 zzz
  6576.     * FloodOnlySearchJob:
  6577.       - Ask non-floodfill peers if we don't know any floodfills
  6578.       - Lookup hashes in the DatabaseSearchReplyMessage if we
  6579.         don't know enough floodfills
  6580.     * NetDb: Check new routers against blocklist
  6581.     * Router: Shutdown clients first
  6582.     * Throttle:
  6583.       - Use 60s rather than 10m tunnel.participatingMessageCount stat
  6584.       - Fix a summary bar message
  6585.     * Tunnel Dispatcher: Update tunnel.participatingMessageCount
  6586.       every 20s, rather than at tunnel expiration, to maintain
  6587.       a more current stat
  6588.     * Tunnel Pool:
  6589.       - Prevent excess zero-hop tunnels
  6590.       - Always wait before looping in BuildExecutor
  6591.     * configlogging.jsp: Increase box width
  6592.     * logs.jsp: Remove unused connection log, cut wrapper log output in half
  6593.  
  6594. 2008-09-12 zzz
  6595.     * Blocklist: Fix a log message format
  6596.     * HarvesterJob: Don't instantiate if disabled
  6597.     * i2psnark:
  6598.       - Add config i2psnark.linkPrefix to enable access to completed
  6599.         torrents from a different machine - examples:
  6600.            i2psnark.linkPrefix=file://///localserver/path/to/files/
  6601.            i2psnark.linkPrefix=http://localwebserver/path/
  6602.         (Stop i2psnark, add to i2psnark.config, restart)
  6603.       - Remove Galen and NickyB trackers
  6604.     * NetDb: Add netDb.exploreKeySet stat
  6605.     * netdb.jsp: Add parameter ?r=xxxxxx to view a single routerinfo,
  6606.       and ?r=. to view our own; change links on other pages too
  6607.     * Transport: Make 0.0.0.0/8 and 169.254.0.0/16 private
  6608.  
  6609. 2008-09-06 zzz
  6610.     * EepGet command line: Fix byte counts after a failed resume
  6611.     * NTCP: Mark unreachable on outbound connection timeout
  6612.     * Shitlist: Fix partial shitlisting (still unused though)
  6613.     * Summary Bar: Warn if firewalled and floodfill
  6614.     * Throttle: Combine current and last bw measurement,
  6615.       reduce default max tunnels to 2500 (was 3000)
  6616.     * Tunnel BuildHandler: Logging cleanup
  6617.     * UpdateHandler: Cleanup, clarify failure message
  6618.     * DataHelper: Prepare for 999 day uptime :)
  6619.  
  6620. 2008-08-29 zzz
  6621.     * Tunnel BuildExecutor: Debug cleanup
  6622.     * Profiles: Penalize capacity when tunnel build request times out
  6623.     * Shutdown: Call the shutdown hooks before the router shutdown
  6624.       rather than after
  6625.     * Stats: Remove tunnel.Bps.* stats when the tunnel pool is closed
  6626.  
  6627. 2008-08-27 zzz
  6628.     * Floodfill Peer Selector: Prefer already-connected floodfill
  6629.       peer for direct RouterInfo stores, to mimimize floodfill
  6630.       connections
  6631.     * Peer Profiles: Classify connected peers as "active",
  6632.       which will help improve the fast pool
  6633.     * Transport Manager: Add isEstablished(Hash)
  6634.     * NTCP: Reduce max idle time from 20m to 15m
  6635.     * NetDb stats: Post-0.6.3 clean up
  6636.  
  6637. * 2008-08-24  0.6.3 released
  6638.  
  6639. 2008-08-24 Complication
  6640.     * Update versions, package release
  6641.  
  6642. 2008-08-20 zzz
  6643.     * Blocklists: Handle blank lines and \r\n in blocklist.txt
  6644.     * NTCP: Add connection limit, set by i2np.ntcp.maxConnections,
  6645.       default is 500 (very high for now)
  6646.     * Persistent data store: Increase write limit from 300 to 600
  6647.       so floodfill routers don't get backed up
  6648.  
  6649. 2008-08-13 zzz
  6650.     * i2psnark: Fix OOM vulnerability by checking incoming message length
  6651.       (thanks devzero!)
  6652.  
  6653. 2008-08-04 zzz
  6654.     * Floodfill Peer Selector:
  6655.       - Avoid peers whose netdb is old, or have a recent failed store,
  6656.         or are forever-shitlisted
  6657.  
  6658. 2008-07-30 zzz
  6659.     * Blocklists:
  6660.       - New, disabled by default, except for blocking of
  6661.         forever-shitlisted peers. See source for instructions
  6662.         and file format.
  6663.     * Transport - Reject peers from inbound connections:
  6664.       - Check IP against blocklist
  6665.       - Check router hash against forever-shitlist, then block IP
  6666.  
  6667. 2008-07-16 zzz
  6668.     * configpeer.jsp: New
  6669.     * i2psnark: Open completed files read-only the first time
  6670.     * profiles.jsp: Show bonuses, link to configpeer.jsp
  6671.     * PRNG: Move logging from wrapper to router log
  6672.     * SSU:
  6673.         Don't proactively reconnect until 30m idle, so
  6674.         we don't lose introducer tags prematurely
  6675.  
  6676. 2008-07-16 Oldaris
  6677.     * Imports cleanup
  6678.  
  6679. 2008-07-07 zzz
  6680.     * i2psnark:
  6681.       - Repair corrupted files with wrong length rather than die
  6682.       - Register shutdown hook to properly shutdown torrents when
  6683.         the router shuts down, hopefully will reduce corruption
  6684.       - Add Galen tracker
  6685.       - Add a note about how to change directory
  6686.     * HTTP Proxy: Don't show jump links for unknown jump hosts
  6687.     * KeyManager:
  6688.       - Don't write router key backup when leaseSet keys are updated
  6689.       - Synchronize to prevent concurrent writes (thanks Galen!)
  6690.       - Backup keys every 7 days instead of every 5 minutes
  6691.     * LoadTestManager: Don't instantiate, it's disabled
  6692.     * Router console: Flag placeholder pages as noncacheable
  6693.     * Streaming lib:
  6694.       - Change some logging from WARN to INFO
  6695.       - Clean up toString()
  6696.     * SSU:
  6697.       - Try to pick better introducers by checking shitlist,
  6698.         wasUnreachable list, failing list, and idle times
  6699.       - To keep introducer connections up and valid,
  6700.         periodically send a "ping" (a data packet with no data and no acks)
  6701.         to everybody that has been an introducer in the last two hours
  6702.       - Add a stat udp.receiveRelayRequestBadTag, make udp.receiveRelayRequest only for good ones
  6703.       - Remove some 60s and 5m stats, leave only the 10m ones
  6704.       - Narrow the range for the retransmit time after an allocation fail
  6705.       - Adjust some logging
  6706.  
  6707. 2008-06-30 zzz
  6708.     * configstats.jsp: Fix NPE when no stats checked (thanks nothome27!)
  6709.     * i2psnark:
  6710.       - Fix NPE caused by race (thanks echelon!)
  6711.       - Add mastertracker, remove de-ebook
  6712.     * NTCP:
  6713.       - Try to fix 100% CPU, caused perhaps by JVM NIO bug...
  6714.       - Fix failsafe stats
  6715.     * PersistentDataStore: More leaseSet code cleanup
  6716.     * SimpleTimer: Change congestion message from error to warn
  6717.  
  6718. 2008-06-24 zzz
  6719.     * FloodfillMonitorJob: Change range from 5-7 to 4-6
  6720.     * NTCP: Remove getIsInbound(), duplicate of isInbound()
  6721.     * PersistentDataStore: Don't try to remove nonexistent leaseSet files
  6722.     * Router console: add placeholder pages for i2psnark, i2ptunnel,
  6723.       susidns, and susimail for use when the .wars are not running
  6724.     * Streaming lib: Increase max window size to 128
  6725.  
  6726. 2008-06-22 welterde
  6727.     * Optimize I2PDatagramDissector
  6728.  
  6729. 2008-06-20 zzz
  6730.     * configclients.jsp: Add start button for clients and webapps.
  6731.     * PRNG: Add two stats
  6732.     * Summary bar:
  6733.       - Display Warning for TCP private IP address
  6734.       - Display PRNG stats
  6735.     * OutNetMessage: Change cache logging from WARN to INFO
  6736.  
  6737. 2008-06-17 zzz
  6738.     * Comm System: Add new STATUS_HOSED for use when UDP bind fails
  6739.     * Summary bar: Display helpful errror message when UDP bind fails
  6740.     * UDP: Don't bid when UDP bind fails
  6741.     * configclients.jsp: Implement saves for clients and webapps.
  6742.  
  6743. 2008-06-16 zzz
  6744.     * UDP: Prevent 100% CPU when UDP bind fails;
  6745.       change bind fail message from ERROR to CRIT
  6746.     * Refactor LoadClientAppsJob.java, move some functions to new
  6747.       ClientAppConfig.java, to make them easily available to
  6748.       new configclients.jsp
  6749.     * RouterConsoleRunner: Use a new config file, webapps.config,
  6750.       to control which .wars in webapps/ get run. Apps are enabled
  6751.       by default; disable by (e.g.) webapps.syndie.startOnLoad=false
  6752.       Config file is written if it does not exist.
  6753.       Implement methods for use by new configclients.jsp.
  6754.     * configclients.jsp: New. For both clients and webapps.
  6755.       Saves are not yet implemented.
  6756.  
  6757. 2008-06-10 zzz
  6758.     * Floodfill: Add new FloodfillMonitorJob, which tracks active
  6759.       floodfills, and automatically enables/disables floodfill on
  6760.       Class O routers to maintain 5-7 total active floodfills
  6761.     * NetDb Stats:
  6762.       - Remove several more stats
  6763.       - Don't publish bw stats in first hour of uptime
  6764.       - Publish floodfill stats even if other stats are disabled
  6765.       - Changes not effective until 0.6.2.1 to provide cover.
  6766.     * Throttle: Use BANDWIDTH rather than CRIT as the rejection reason at
  6767.       startup, so peers don't list us as failing.
  6768.     * graphs.jsp: Fix a bug where it tries to display the combined
  6769.       bandwidth graph when it isn't available
  6770.  
  6771. 2008-06-09 zzz
  6772.     * Propagate i2.i2p.i2p-0.6.2.1-pre branch to i2p.i2p
  6773.  
  6774. 2008-06-09 zzz
  6775.     * Reachability: Restrict peers with no SSU address at all from inbound tunnels
  6776.     * News:
  6777.       - Add display of last updated and last checked time
  6778.         on index.jsp and configupdate.jsp
  6779.       - Add a function to get update version (unused for now)
  6780.     * config.jsp: Add another warning
  6781.  
  6782. 2008-06-07 zzz
  6783.     * NetDb: Tweak some logging on lease problems
  6784.     * Shitlist:
  6785.       - Add shitlistForever() and isShitlistedForever(), unused for now
  6786.       - Sort the HTML output by router hash
  6787.     * netdb.jsp:
  6788.       - Sort the lease HTML output by dest hash, local first
  6789.       - Sort the router HTML output by router hash
  6790.  
  6791. 2008-06-06 zzz
  6792.     * LeaseSet:
  6793.       - Sort the leases by expiration date in TunnelPool.locked_buildNewLeaseSet()
  6794.         to make later LeaseSet comparisons reliable. This cleans up the code too.
  6795.       - Fix broken old vs. new LeaseSet comparison
  6796.         in ClientConnectionRunner.requestLeaseSet(),
  6797.         so that we only sign and publish a new LeaseSet when it's really new.
  6798.         Should reduce outbound overhead both in LeaseSet publishing and LeaseSet bundling,
  6799.         and floodfill router load, since locked_buildNewLeaseSet() generates
  6800.         the same LeaseSet as before quite frequently, often just seconds apart.
  6801.  
  6802. 2008-06-05 zzz
  6803.     * LeaseSet - code cleanup:
  6804.       - Add exception to enforce max # of leases = 6, should be plenty
  6805.       - Rewrite TunnelPool.locked_buildNewLeaseSet() so it doesn't add lots of
  6806.         leases and then immediately remove them again, triggering
  6807.         the new leaseSet size exception
  6808.       - Remove the now unused LeaseSet.removeLease(lease) and
  6809.         LeaseSet.removeLease(index)
  6810.       - Store first and last expiration for efficiency
  6811.     * Peer Profiles - Preparation for using bonuses:
  6812.       - Use CapacityBonus rather than ReachablilityBonus in the Capacity calculation
  6813.       - Persist CapacityBonus rather than ReachabilityBonus
  6814.       - Include SpeedBonus in the Speed calculation
  6815.       - Prevent negative values in Speed and Capacity when using bonuses
  6816.       - Clean up SpeedCalculator.java
  6817.     * HTTP Proxy error pages: Don't say eepsites are 'temporarily' down since we don't know
  6818.     * Add some config files for a future small distribution
  6819.     * configtunnels.jsp: Add warnings for <= 0 and >= 4 hop configurations
  6820.  
  6821. 2008-06-01 zzz
  6822.     * Client Apps: Add new parameter for clients.config,
  6823.         clientApp.x.startOnLoad=false, to disable loading
  6824.         (for SAM for example). Defaults to true of course.
  6825.     * Logging: Move common WARN output to DEBUG so we can ask users to
  6826.         set the default log level to WARN without massive spewage
  6827.     * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
  6828.       not just the Fast tier, since we don't use them for tunnels anyway
  6829.     * SAM: Add some compiler flexibility to two obscure makefiles
  6830.     * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
  6831.       (sponge's suggestion)
  6832.     * summary bar:
  6833.       - Hide ident, provide a tooltip and a link
  6834.       - Add a warning if you are firewalled and class O
  6835.  
  6836. 2008-06-07 Complication
  6837.     * Fix version in news.xml so it could be published
  6838.  
  6839. * 2008-06-07  0.6.2 released
  6840.  
  6841. 2008-06-07 Complication
  6842.     * Write announcement and prepare for release
  6843.  
  6844. 2008-05-29 zzz
  6845.     * Fix up initialNews.xml
  6846.  
  6847. 2008-05-27 zzz
  6848.     * Transport:
  6849.       - NTCP and UDP: Don't bid to connect to private IP addresses, mark unreachable
  6850.       - UDP: Don't bid when IP address missing, mark unreachable
  6851.  
  6852. 2008-05-26 zzz
  6853.     * Throttle: Set a default router.maxParticipatingTunnels = 3000 (was none)
  6854.     * Stats: Add a fake uptime if not publishing stats, to get participating tunnels
  6855.     * build.xml:
  6856.       - Add an updaterSmall target which includes only the essentials
  6857.       - Add an updaterRouter target which includes only i2p.jar and router.jar
  6858.       - Clean up the build file some
  6859.       - Remove empty eepsite/ and subdirs from i2pupdate.zip
  6860.     * configtunnels.jsp: Add warning
  6861.     * i2psnark: Catch a bencode exception (bad peer from tracker) earlier
  6862.     * i2psnark-standalone: Fix exception http://forum.i2p/viewtopic.php?p=12217
  6863.  
  6864. 2008-05-22 welterde
  6865.     * Change jetty download location in build script
  6866.  
  6867. 2008-05-20 zzz
  6868.     * Reachability:
  6869.       - Call the previously unused profile.tunnelTestFailed()
  6870.         (redefined to include a probability argument)
  6871.         and severely downgrade a peer's capacity upon failures,
  6872.         depending on tunnel length and direction.
  6873.         This will help push unreachable and malicious peers
  6874.         out of the High Capacity tier.
  6875.       - Put recent fail rate on profiles.jsp
  6876.     * ProfileOrganizer: Logging cleanup
  6877.     * eepsite_index.html: Update add-host and jump links
  6878.     * HTTP Proxy: Remove trevorreznik jump server from list
  6879.  
  6880. 2008-05-20 welterde
  6881.     * implemented PrivateKeyFile
  6882.  
  6883. 2008-05-18 zzz
  6884.     * Throttle: Reject tunnels for first 20m uptime (was 10m)
  6885.     * TunnelPeerSelectors:
  6886.        - Re-enable strict ordering of peers,
  6887.          based on XOR distance from a random hash
  6888.        - Restrict peers with uptime < 90m from tunnels (was 2h),
  6889.          which is really 60m due to rounding in netDb publishing.
  6890.     * i2psnark:
  6891.        - Limit max pipelined requests from a single peer to 128KB
  6892.          (was unlimited; i2p-bt default is 5 * 64KB)
  6893.        - Increase max uploaders per torrent to 6 (was 4)
  6894.        - Reduce max connections per torrent to 16 (was 24) to increase
  6895.          unchoke time and reduce memory consumption
  6896.        - Strictly enforce max connections per torrent
  6897.        - Choke more gradually when over BW limit
  6898.     * help.jsp: Add a link to the FAQ
  6899.     * peers.jsp: Fix UDP direction indicators
  6900.     * hosts.txt: Add update.postman.i2p
  6901.  
  6902. 2008-05-12 zzz
  6903.     * Outbound message:
  6904.       - Tweak the cache key for efficiency
  6905.     * Stats:
  6906.       - Require two udp stats when stats.full=false, caused NPE on peers.jsp
  6907.     * Summary bar:
  6908.       - Add messages when dropping tunnel requests due to load
  6909.     * Update Handler:
  6910.       - Add postman to the list
  6911.     * i2psnark:
  6912.       - Randomize the PeerCheckerTask start times to make global limiting
  6913.         work better
  6914.       - Calculate bw limits using 40s rather than 4m averages to make
  6915.         bw limiting work better
  6916.       - Change default bw limit from uplimit/3 to uplimit/2 due to
  6917.         overhead reduction from the leaseset bundling change
  6918.     * libjbigi:
  6919.       - Add documentation on dynamic build option
  6920.       - Add two speed tests to the build script
  6921.       - Clean up the build script, make it easier to build dynamic
  6922.  
  6923. 2008-05-10 zzz
  6924.     * NetDb: Don't write the my.info file to disk, it isn't used for anything
  6925.     * Stats:
  6926.       - Simplify oldstats.jsp if no events in a stat
  6927.       - Fix the hosed inNetPool.droppedDeliveryStatusDelay stat
  6928.         (caused by an SSU hack)
  6929.     * Update Handler:
  6930.       - Add option to download and verify only
  6931.       - Add distinct error message if version check fails
  6932.  
  6933. 2008-05-09 welterde
  6934.     * Add an update URL to the list
  6935.  
  6936. 2008-05-07 zzz
  6937.     * Reachability:
  6938.       - Restrict peers requiring introducers from inbound tunnels,
  6939.         since it's slow and unreliable... and many of them advertise
  6940.         NTCP, which seems unlikely to work
  6941.       - Provide warning on summary bar if firewalled with inbound NTCP enabled
  6942.     * Stats: Remove the bw.[send,recv]Bps[1,15]s stats unless
  6943.       log level net.i2p.router.transport.FIFOBandwidthLimiter >= WARN
  6944.       at startup (you didn't get any data unless you set the log level anyway)
  6945.     * oldstats.jsp: Don't put 2 decimal places on integer event counts
  6946.     * Remove the Internals link from the menu bar
  6947.     * i2psnark: Extend startup delay from 1 to 3 minutes
  6948.  
  6949. 2008-05-06 welterde
  6950.     * HTTP Proxy: Add i2jump.i2p jump service
  6951.  
  6952. 2008-05-05 zzz
  6953.     * NetDb Stats: Cleanup of commented out stats
  6954.     * Outbound message:
  6955.       - Fix a couple of tunnel cache cleaning bugs
  6956.       - Cache based on source+dest pairs rather than just dest
  6957.       - Send the reply leaseSet only when necessary,
  6958.         rather than all the time (big savings in overhead)
  6959.       - Enable persistent lease selection again
  6960.       - Logging tweaks
  6961.     * Reachability:
  6962.       - Restrict <= .32 SSU-only peers from inbound tunnels,
  6963.         since they don't know if they are unreachable
  6964.       - Have SSU bid aggressively when it has less than 3 peers, so
  6965.         we can determine our IP address and do peer testing.
  6966.         Otherwise a router may never determine its IP address or reachability status.
  6967.     * Summary bar:
  6968.       - Add reachability status
  6969.       - Add participating tunnel acceptance status
  6970.     * Throttle: Reject tunnels for first 10m uptime
  6971.     * I2PTunnel: Change default outproxy to false.i2p
  6972.     * profiles.jsp: Add router version
  6973.  
  6974. * 2008-04-26  0.6.1.33 released
  6975.  
  6976. 2008-04-20 zzz
  6977.     * Outbound message/Reachability:
  6978.       - Fix a bug from -19 causing the persistent lease selection
  6979.         removed in -17 to be back again
  6980.       - Use netDb-listed-unreachable instead of detected-unreachable
  6981.         for exclusion of unreachable peers from selected leases,
  6982.         as there are potential anonymity problems with using
  6983.         detected-unreachable
  6984.       - Tweak logging some more
  6985.     * NetDb stats: Remove a couple more including the inefficient stat_identities
  6986.  
  6987. 2008-04-17 zzz
  6988.     * Reachability:
  6989.       - Track unreachable peers persistently
  6990.         (i.e. separately from shitlist, and not cleared when they contact us)
  6991.       - Exclude detected unreachable peers from inbound tunnels
  6992.       - Exclude detected unreachable peers from selected leases
  6993.       - Exclude detected unreachable floodfill peers from lookups
  6994.       - Show unreachable status on profiles.jsp
  6995.  
  6996. 2008-04-16 zzz
  6997.     * SSU/Reachability:
  6998.       - Extend shitlist time from 4-8m to 40-60m
  6999.       - Add some shitlist logging
  7000.       - Don't shitlist twice when unreachable on all transports
  7001.       - Exclude netDb-listed unreachable peers from inbound tunnels;
  7002.         this won't help much since there are very few of these now
  7003.       - Remove 10s delay on inbound UDP connections used for the
  7004.         0.6.1.10 transition
  7005.       - Track and display UDP connection direction on peers.jsp
  7006.       - Show shitlist status in-line on profiles.jsp
  7007.  
  7008. 2008-04-15 zzz
  7009.     * SSU Reachability/PeerTestManager:
  7010.       - Back out strict peer ordering until we fix SSU
  7011.       - Back out persistent lease selection until we fix SSU
  7012.       - Fix detection of UDP REJECT_UNSOLICITED by recording status on expiration
  7013.       - Increase known Charlie time to 10m; 3m wasn't enough
  7014.       - Don't continue retransmitting peer test if we know Charlie
  7015.       - Don't run multiple peer tests at once
  7016.       - Tighten test frequency range to 6.5-19.5m, was 0-26m
  7017.  
  7018. 2008-04-12 zzz
  7019.     * Addressbook: Disallow '.-' and '-.' in host names
  7020.     * NTCP: Don't drop a connection unless both directions are idle;
  7021.             Fix idle time for outbound connections
  7022.     * Outbound message: Make sure cached lease is in current leaseSet
  7023.     * Stats: Put all NetworkDatabase stats in same group
  7024.     * TunnelPool: Stop building tunnels and leaseSets after client shutdown
  7025.     * i2psnark: Add locking to prevent two I2CP connections
  7026.  
  7027. 2008-04-07 zzz
  7028.     * i2psnark:
  7029.       - Implement upstream bandwidth limiting
  7030.       - Fix a rare NPE at startup/shutdown
  7031.       - Really increase retries for .torrent fetch
  7032.     * profiles.jsp: Minor cleanup
  7033.     * DataHelper: Only format < 5s as ms
  7034.     * Eepget: Fix percentage output on command line eepget retries
  7035.     * Lower partipating message priority from 400 to 200
  7036.     * NTCP: Add a debug message
  7037.     * Outbound message: Minor cleanup
  7038.  
  7039. 2008-03-30 zzz
  7040.     * ExploratoryPeerSelector: Try NonFailing even more
  7041.     * HostsTxtNamingService: Add reverse lookup support
  7042.     * Outbound message: Minor cleanup
  7043.     * i2psnark TrackerClient: Minor cleanup
  7044.     * checklist.txt: Minor edit
  7045.     * hosts.txt: Add perv.i2p, false.i2p, mtn.i2p2.i2p
  7046.     * i2ptunnel.config: Change CVS client to mtn
  7047.     * netdb.jsp: Show leaseSet destinations using reverse lookup
  7048.     * profiles.jsp: First cut at showing floodfill data
  7049.  
  7050. 2008-03-27 zzz
  7051.     * Send messages for the same destination to the same inbound
  7052.       lease to reduce out-of-order delivery.
  7053.     * ExploratoryPeerSelector: Back out the floodfill peer exclusion
  7054.       for now, as it prevents speed rating of those peers
  7055.  
  7056. 2008-03-26 zzz
  7057.     * ReseedHandler: Support multiple urls,
  7058.       add netdb.i2p2.de as a 2nd default
  7059.  
  7060. 2008-03-25 zzz
  7061.     * i2psnark:
  7062.       - Add support for secondary open trackers
  7063.       - Refactor and simplify the TrackerClient code
  7064.       - Add welterde's tracker to the default list
  7065.       - Don't have eepget retry announces
  7066.       - Slow down tracker contacts if they've failed for a while
  7067.       - Add some debug support showing connections (?p=2)
  7068.     * hosts.txt: Add nickyb.i2p, tracker.welterde.i2p
  7069.  
  7070. 2008-03-22 zzz
  7071.     * NewsFetcher: Fix bug causing fetch every 10m
  7072.  
  7073. 2008-03-22 zzz
  7074.     * Tunnel Testing:
  7075.       - Fix counting so it really takes 4 consecutive failures
  7076.         rather than 4 total to remove a tunnel
  7077.       - Credit or blame goes to the exploratory tunnel as well
  7078.         as the tunnel being tested
  7079.       - Adjust tunnel test timeout based on tunnel length
  7080.     * ExploratoryPeerSelector: Tweak logging
  7081.     * ProfileOrganizer: Adjust integration calculation again
  7082.     * build.xml: Add to help
  7083.     * checklist.txt: Tweak
  7084.     * readme.html: Fix forum links
  7085.     * netDb: Remove tunnel.testFailedTime
  7086.  
  7087. 2008-03-19 zzz
  7088.     * ExploratoryPeerSelector:
  7089.       - Exclude floodfill peers
  7090.       - Tweak the HighCap vs. NonFailing decision; try NonFailing
  7091.         at least a minimum % of the time
  7092.     * i2psnark: Increase retries for .torrent fetch
  7093.     * IRC Proxy: Prevent mIRC from sending an alternate DCC request
  7094.       containing an IP
  7095.     * readme.html: Reorder some items
  7096.     * Stats: Add some more required stats
  7097.     * Streaming lib: Fix slow start to be exponential growth,
  7098.       fix congestion avoidance to be linear growth.
  7099.       Should speed up local connections a lot, and remote
  7100.       connections a little.
  7101.  
  7102. 2008-03-14 zzz
  7103.     * Floodfill Search:
  7104.        - Prefer heard-from, unfailing, unshitlisted floodfill peers
  7105.  
  7106. 2008-03-14 zzz
  7107.     * ProfileOrganizer:
  7108.        - Use more recent stats to calculate integration
  7109.        - Show that fast peers are also high-capacity on profiles.jsp
  7110.     * readme.html: Update Syndie link
  7111.     * TunnelPool: Update comments
  7112.     * netDb: Report 1-2h uptime as 90m to further frustrate tracking,
  7113.       get rid of the 60s tunnel stats
  7114.       (effective as of .33 to provide cover)
  7115.  
  7116. 2008-03-13 zzz
  7117.     * Floodfill Search:
  7118.        - Fix a bug that caused a single FloodfillOnlySearchJob
  7119.          instance to be run multiple times, with unpredictable
  7120.          results
  7121.        - Select ff peers randomly to improve reliability
  7122.        - Add some bulletproofing
  7123.  
  7124. 2008-03-11 zzz
  7125.     * ProfileOrganizer:
  7126.        - Don't require a peer to be high-capacity to be
  7127.          well-integrated (not used for anything right now,
  7128.          but want to get it right for possible floodfill verification)
  7129.        - Don't fall back to median for high-capacity threshold
  7130.          if the mean is higher than the median, this prevents
  7131.          frequent large high-capacity counts
  7132.        - Fix high-capacity selector that picked one too many
  7133.     * Console: put well-integrated count back in the summary
  7134.  
  7135. 2008-03-10 zzz
  7136.     * EepGet: Fix byte count for bytesTransferred status listeners
  7137.       (fixes command line status)
  7138.     * UpdateHandler:
  7139.        - Fix byte count display
  7140.        - Display final status on router console
  7141.        - Don't allow multiple update jobs to queue up
  7142.        - Increase max retries
  7143.        - Code cleanup
  7144.        - Don't show 'check for update' button when update in progress
  7145.        - Enhance error messages
  7146.     * NetDb: Comment out published netDb stats disabled for .32
  7147.  
  7148. 2008-03-08 zzz
  7149.     * TunnelPeerSelectors: Implement strict ordering of peers,
  7150.       based on XOR distance from a random hash
  7151.       separately generated for each tunnel pool
  7152.  
  7153. 2008-03-07 zzz
  7154.     * Naming: Optimize lookups for a destkey
  7155.     * ProfileOrganizer, TunnelPoolSettings, ClientPeerSelector:
  7156.       - Prevent peers with matching IPs from joining same tunnel.
  7157.         Match 0-4 bytes of IP (0=off, 1=most restrictive, 4=least).
  7158.         Default is 2 (disallow routers in same /16).
  7159.         Set with router.defaultPool.IPRestriction=x
  7160.       - Comment out unused RebuildPeriod pool setting
  7161.       - Add random key to pool in preparation for XOR peer ordering
  7162.     * SusiMail: Add 'Create Account' link
  7163.     * TunnelDispatcher: Change a common wtf error to a warn
  7164.  
  7165. 2008-03-05 zzz
  7166.     * Naming: Make HostsTxt the sole default NamingService
  7167.       (was Meta = PetName + HostsTxt)
  7168.     * Naming: Add two new experimental NamingServices, EepGet and Exec,
  7169.       not enabled by default -
  7170.       see source comments in core/java/src/net/i2p/client/naming
  7171.       for configuration instructions
  7172.     * i2psnark: Don't do a naming lookup for Base64 destkeys
  7173.     * i2psnark: Add a StartAll button
  7174.     * Stats: Add code to disable most stats to save memory.
  7175.       Set on configstats.jsp or set stat.full=false to disable the stats.
  7176.       (true by default for now)
  7177.  
  7178. 2008-03-09 Complication
  7179.     * Give the Jetty build file ability to ask permission
  7180.       before downloading the Jetty archive from the web,
  7181.       and to verify its SHA1 + MD5 hashes. Adjust the main build file
  7182.       in accordance with this change.
  7183.     * Improve the release checklist.
  7184.  
  7185. * 2008-03-09  0.6.1.32 released
  7186.  
  7187. 2008-03-07 zzz
  7188.     * Update news and version numbers
  7189.  
  7190. 2008-03-01 zzz
  7191.     * Fix netdb.knownLeaseSets count reported by floodfill routers
  7192.       (was broken by -3)
  7193.  
  7194. 2008-02-27 zzz
  7195.     * i2ptunnel: Add 3-hop option to edit.jsp to match configtunnels.jsp
  7196.     * i2psnark: Remove orion and gaytorrents from default tracker list
  7197.     * Remove orion from jump list and from eepsite_index.html
  7198.     * Jbigi: Change jbigi version to 4.2.2 in build scripts - tested by amiga
  7199.     * Capitalize OutboundMessageDistributor job name
  7200.     * TunnelPool: Add a warning if all tunnels are backlogged
  7201.  
  7202. 2008-02-26 zzz
  7203.     * Reintroduce NTCP backlog pushback, with switch back to
  7204.       previous tunnel when no longer backlogged
  7205.     * Catch an nio exception in an NTCP logging statement if loglevel is WARN
  7206.     * IRC Proxy: terminate all messages with \r\n (thanks TrivialPursuit!)
  7207.  
  7208. 2008-02-21 zzz
  7209.     * Raise inbound default bandwidth to 32KBps
  7210.     * Fix config.jsp that showed 0KBps share bandwidth by default
  7211.  
  7212. 2008-02-19 zzz
  7213.     * Addressbook: Disallow '--' in host names except in IDN,
  7214.       add some reserved host names
  7215.     * I2PTunnel: Clarify edit form
  7216.     * NetDb: Remove many stats from netDb, effective as of .32
  7217.     * profiles.jsp: Display capabilities
  7218.     * Tunnels: Enforce max tunnel length of 8, catch an index error
  7219.       http://forum.i2p/viewtopic.php?t=2561
  7220.  
  7221. 2008-02-16 zzz
  7222.     * Fix race in TunnelDispatcher which caused
  7223.       participating tunnel count to seesaw -
  7224.       should increase network capacity
  7225.     * Leave participating tunnels in 10s batches for efficiency
  7226.     * Update participating tunnel ratestat when leaving a tunnel too,
  7227.       to generate a smoother graph
  7228.     * Fix tunnel.participatingMessageCount stat to include all
  7229.       participating tunnels, not just outbound endpoints
  7230.     * Simplify Expire Tunnel job name
  7231.  
  7232. 2008-02-13 zzz
  7233.     * PersistentDataStore: Write out 300 records every 10 min
  7234.       rather than 1 every 10 sec;
  7235.       Don't store leasesets to disk or read them in
  7236.     * Combine rates for pools with the same length setting
  7237.       in the new tunnel build algorithm
  7238.     * Clarify a log message in the UpdateHandler
  7239.  
  7240. 2008-02-13 zzz
  7241.     * Make graphs clickable to get larger graphs
  7242.     * Change SimpleTimer CRIT to a WARN, increase threshold
  7243.     * Checklist update
  7244.  
  7245. 2008-02-11 welterde
  7246.     * Fix an NPE in UDP http://forum.i2p/viewtopic.php?t=2545
  7247.  
  7248. 2008-02-10 zzz
  7249.     * Add new tunnel build algorithm (preliminary)
  7250.     * Change NTCP backlogged message from error to warning
  7251.     * Checklist updates
  7252.  
  7253. * 2008-02-10  0.6.1.31 released
  7254.  
  7255. 2008-02-10 Complication
  7256.     * Update news and version numbers
  7257.  
  7258. 2008-02-06 zzz
  7259.     * build.xml: Add some apps to javadoc
  7260.     * checklist.txt: Add some things
  7261.     * news.xml: make links relative
  7262.     * runplain.sh: Add some comments
  7263.     * wrapper.config: Add some comments
  7264.  
  7265. 2008-02-05 Complication
  7266.     * Change the dates too (sorry for such forgetfulness!)
  7267.  
  7268. 2008-02-04 Complication
  7269.     * Also use the new key for checking, and add it into news.xml
  7270.  
  7271. 2008-02-04 Complication
  7272.     * Added my release signing key into TrustedUpdate.java
  7273.  
  7274. 2008-01-31 zzz
  7275.     * NewsFetcher: Change fetch failed from error to warning
  7276.     * installer: Fix URL and "email"
  7277.     * checklist.txt: New release checklist
  7278.  
  7279. 2008-01-29 zzz
  7280.     * Addressbook: Change default subscription
  7281.     * ConfigUpdateHandler: Change default news URL
  7282.     * initialNews.xml: Update version to .31
  7283.     * news.xml: More updates
  7284.     * hosts.txt: Add i2p-projekt.i2p
  7285.     * readme.html: More URL updates
  7286.     * SusiDNS: Change references to default subscription
  7287.  
  7288. 2008-01-28 zzz
  7289.     * news.xml: Updates, still preliminary
  7290.     * ReseedHandler: Change default URL
  7291.     * i2ptunnel.config: Change default outproxies
  7292.     * readme.html: Change *.i2p.net URLs
  7293.     * help.jsp: Change *.i2p.net URLs
  7294.     * eepsite_index.html: Change stats.i2p addressbook subscription URL
  7295.     * hosts.txt: Add krabs.i2p, true.i2p, www.i2p2.i2p
  7296.  
  7297. * 2008-01-28  0.6.1.30-20 converted from CVS to MTN
  7298.  
  7299. 2008-01-08 zzz
  7300.     * addressbook: Limit size of subscribed hosts.txt,
  7301.         don't save old etag or last-modified data
  7302.     * EepGet: Add some logging,
  7303.         enforce size limits even when size not in returned header,
  7304.         don't return old etag or last-modified data,
  7305.         don't call transferFailed listener more than once
  7306.     * Sign my update signing key
  7307.     * NewsFetcher: add last-modified support, reduce number of retries
  7308.     * Error pages: add icon and logo,
  7309.         clarify 'destination not found' and 'proxy not found' pages
  7310.  
  7311. 2008-01-07 zzz
  7312.     * profiles.jsp formatting cleanup
  7313.     * NTCP: Reduce max idle time from 60m to 20m
  7314.     * NTCP: Fix idle time on connections with zero messages,
  7315.       correctly drop these connections
  7316.  
  7317. 2008-01-03 zzz
  7318.     * addressbook: Do basic validation of hostnames and destkeys
  7319.     * susidns: Add support for the private addressbook,
  7320.       update the text and links somewhat
  7321.  
  7322. 2008-01-02 zzz
  7323.     * Add stats.i2p to the jump list
  7324.     * Impose 20MB limit on POSTs and catch OOMs in POST
  7325.     * eepsite_index.html: add stats.i2p services
  7326.     * addressbook: log source of new keys; disallow dests > 516 bytes
  7327.     * addressbook: convert hostnames to lower case to prevent duplicates
  7328.     * susidns: generalize references to orion
  7329.  
  7330. 2007-12-29 zzz
  7331.     * Tweak IRC inbound PONG filtering to fix xchat/BitchX lagometers
  7332.     * Allow commas in router.trustedUpdateKeys and router.updateURL again
  7333.     * Change default news host from dev.i2p.net to dev.i2p
  7334.     * Change jetty timeout from 30 to 60 sec (thanks sponge!)
  7335.  
  7336. 2007-12-28 zzz
  7337.     * Add zzz's update signing key
  7338.  
  7339. 2007-12-26 Complication
  7340.     * Improve reseed handler (less repetitive code,
  7341.       avoid reporting errors when less than 10% of fetches fail)
  7342.  
  7343. 2007-12-26 Complication
  7344.     * Escape both CR, LF and CR LF line breaks in Router.saveConfig()
  7345.       and unescape them in DataHelper.loadProps() to support
  7346.       saving and loading config properties with line breaks
  7347.     * Change the update URLs textbox into a textarea like keys have,
  7348.       so different URLs go on different lines
  7349.     * Modify TrustedUpdate to provide a method which supplies a key list
  7350.       delimited with CR LF line breaks
  7351.     * Modify DEFAULT_UPDATE_URL to supply a default URL list
  7352.       delimited with CR LF line breaks
  7353.     * Modify selectUpdateURL() to handle URL lists
  7354.       delimited by any kind of line breaks
  7355.     * Start saving trusted update keys
  7356.     * Improve formatting on configupdate.jsp
  7357.  
  7358. 2007-12-22 zzz
  7359.     * Add support for multiple update URLs
  7360.     * Change default for update to use i2p proxy,
  7361.       add several URLs as defaults
  7362.     * Enable trusted key form on configupdate.jsp
  7363.     * Clarify the 'destination not found' error page
  7364.  
  7365. 2007-12-16 zzz
  7366.     * i2psnark: remove anonymitytracker from default list
  7367.  
  7368. 2007-12-10 zzz
  7369.     * Fix NPE in CLI TrustedUpdate keygen
  7370.  
  7371. 2007-12-02 Complication
  7372.     * Commit SAM v2 patch from mkvore (thank you!)
  7373.     * Minor reformatting to preserve consistent whitespace
  7374.       in old SAM classes (new classes unaltered)
  7375.  
  7376. 2007-12-01 Complication
  7377.     * Separate the checks "does Jetty .zip file need downloading"
  7378.       and "does Jetty .zip file need extracting" in the Jetty buildfile.
  7379.       First download (unless already done), then extract (unless done).
  7380.  
  7381. 2007-11-26 zzz
  7382.     * i2psnark: add timeout for receive inactivity
  7383.  
  7384. 2007-11-24 zzz
  7385.     * i2psnark: increase streaming lib write timeout to 240 sec and change
  7386.       timeout action from "ping" to "disconect", as the fix in .30 to
  7387.       honor options on outbound connections led to hung outbound connections
  7388.       (bitfield never transmitted, connection never dropped)
  7389.  
  7390. 2007-11-06 jrandom
  7391.     * add i2host.i2p to the jump list
  7392.  
  7393. 2007-10-11 zzz
  7394.     * IRC Proxy: Fix several possible anonymity holes:
  7395.       - Block CTCP in NOTICE messages
  7396.       - Block CTCP anywhere in PRIVMSG and NOTICE, not just at first character
  7397.       - Check for lower case commands
  7398.     (Thanks sponge!)
  7399.  
  7400. 2007-10-07  jrandom
  7401.     * back out the NTCP backlog pushback, as it could be used to mount an
  7402.       active anonymity attack.
  7403.  
  7404. * 2007-10-07  0.6.1.30 released
  7405.  
  7406. 2007-10-07  Complication
  7407.     * Fix an issue in EepGet whereby sending of "etag" and "lastModified" headers
  7408.       broke retrying.
  7409.  
  7410. 2007-09-27  zzz
  7411.     * Implement pushback of NTCP transport backlog to the outbound tunnel selection code
  7412.     * Clean up the NTCP and UDP tables on peers.jsp to be consistent,
  7413.       fix some of the sorting
  7414.  
  7415. 2007-09-22  zzz
  7416.     * Send messages for the same destination out the same outbound
  7417.       tunnel to reduce out-of-order delivery.
  7418.  
  7419. 2007-09-19  zzz
  7420.     * i2psnark: Fix broken multifile torrent Delete;
  7421.         cleanup Storage resources in AddTorrent;
  7422.         don't autostart torrent after Create
  7423.  
  7424. 2007-09-18  zzz
  7425.     * eepsite_index.html: Add links to trevorreznik address book
  7426.     * streaming lib: Fix SocketManagerFactory to honor options on outbound connections
  7427.     * streaming lib: Fix setDefaultOptions() when called with a ConnectionOptions parameter
  7428.     * i2psnark: Don't make outbound connections to already-connected peers
  7429.     * i2psnark: Debug logging cleanup
  7430.  
  7431. 2007-09-14  zzz
  7432.     * eepget: Increase header timeout to 45s
  7433.     * HTTP proxy: Return a better error message for localhost requests
  7434.     * tunnels: Fix PooledTunnelCreatorConfig memory leak
  7435.  
  7436. 2007-09-09  zzz
  7437.     * eepget: Add support for Last-Modified and If-Modified-Since
  7438.     * addressbook: Finish incomplete support for Last-Modified
  7439.  
  7440. 2007-09-08  zzz
  7441.     * eepget: Copy over SocketTimeout.java file from syndie
  7442.  
  7443. 2007-09-07  jrandom
  7444.     * eepget: Merge timeout support from syndie
  7445.  
  7446. * 2007-08-23  0.6.1.29 released
  7447.  
  7448. 2007-08-12  zzz
  7449.     * readme.html - Add inproxy.tino.i2p, replace search.i2p with eepsites.i2p,
  7450.       tweak the eepsite and troubleshooting sections
  7451.  
  7452. 2007-08-11  zzz
  7453.     * Add stats for individual tunnel rates (nice when graphed)
  7454.     * i2psnark: Fix outbound tunnel nickname
  7455.  
  7456. 2007-08-05  Complication
  7457.     * Update the sharing calculator on config.jsp
  7458.       and explain the trade-off even more thoroughly.
  7459.  
  7460. 2007-08-04  Complication
  7461.     * Lower the threshold between the K and L bandwidth class,
  7462.       so that K is now < 12 KB/s, instead of <= 16 KB/s.
  7463.       Hopefully this lets people with 128 kbit/s (16 KB/s) upload lines
  7464.       participate in routing, if they keep the default share percentage.
  7465.  
  7466. 2007-07-16  zzz
  7467.     * i2psnark: Add tooltip info for choked/uninterested
  7468.  
  7469. 2007-07-16  zzz
  7470.     * Make selection of graphed data configurable via configstats.jsp,
  7471.       remove most of the default graphs to save some memory
  7472.  
  7473. 2007-07-15  zzz
  7474.     * Add current values to graph legends
  7475.     * Fix up previous Rate fix to check for divide by zero
  7476.  
  7477. 2007-07-14  Complication
  7478.     * Take the post-download routerInfo size check back out of ReseedHandler,
  7479.       since it wasn't helpful, and a lower limit caused false warnings.
  7480.     * Give EepGet ability to enforce a min/max HTTP response size.
  7481.     * Enforce a maximum response size of 8 MB when ReseedHandler
  7482.       downloads into a ByteArrayOutputStream.
  7483.     * Refactor ReseedHandler/ReseedRunner from static to ordinary classes,
  7484.       change invocation from RouterConsoleRunner accordingly.
  7485.     * Add an EepGet status listener to ReseedHandler to log causes of reseed failure,
  7486.       provide status reports to indicate the progress of reseeding.
  7487.     * Enable icon for default eepsite, and the index page
  7488.       of the router console (more later).
  7489.  
  7490. 2007-07-14  zzz
  7491.     * Clean up graphs.jsp - set K=1024 where appropriate,
  7492.       output image sizes in html, catch ooms, other minor tweaks
  7493.     * Fix current event count truncation which fixes graphs with low
  7494.       60-sec event counts displaying high values
  7495.       (bw.* and router.* graphs for example were 1.5x too high)
  7496.       Affects all "events per period" (non-lifetime) counts.
  7497.  
  7498. 2007-07-09  zzz
  7499.     * i2psnark: give a better error message for a non-i2p torrent
  7500.  
  7501. 2007-07-07  zzz
  7502.     * Add auto-detect IP/Port to NTCP. When enabled on config.jsp,
  7503.       SSU will notify/restart NTCP when the external address changes.
  7504.       Now you can enable inbound TCP without a static IP or dyndns service.
  7505.  
  7506. 2007-07-04  zzz
  7507.     * Display calculated share bandwidth and remove load testing
  7508.       on config.jsp
  7509.  
  7510. 2007-07-01  zzz
  7511.     * Replace broken option i2np.udp.alwaysPreferred with
  7512.       i2np.udp.preferred and adjust UDP bids; possible settings are
  7513.       "false" (default), "true", and "always".
  7514.       Default setting results in same behavior as before
  7515.       (NTCP is preferred unless it isn't established and UDP is established).
  7516.       Use to compare NTCP and UDP transports.
  7517.  
  7518. 2007-06-27  jrandom
  7519.     * fix for a streaming lib bug that could leave a thread waiting
  7520.       indefinitely (thanks Complication!)
  7521.  
  7522. 2007-06-16  Complication
  7523.     * First pass on EepGet and ReseedHandler improvements,
  7524.       please avoid use on routers which matter!
  7525.     * Give EepGet ability of downloading into an OutputStream,
  7526.       such as the ByteArrayOutputStream of ReseedHandler.
  7527.     * Detect failure to reseed better, report it persistently
  7528.       and more verbosely, provide a link to logs
  7529.       and suggest manual reseed.
  7530.  
  7531. 2007-05-06  Complication
  7532.     * Fix the build.xml file, so the preppkg build target won't try copying files
  7533.       which became deprecated with the old Syndie (thanks for alerting, itsu!)
  7534.  
  7535. 2007-03-31  zzz
  7536.     * Add trevorreznik jump server to the http proxy error page
  7537.     * Add anonymity to the trackers supporting details links in i2psnark
  7538.  
  7539. 2007-03-24  zzz
  7540.     * Remove Syndie from build targets and navbar
  7541.  
  7542. 2007-03-22  zzz
  7543.     * i2psnark tracker handling tweaks:
  7544.     -   Add link to tracker details page (Postman only for now, requires bytemonsoon patch)
  7545.     -   Add Base URL to tracker list configuration
  7546.     -   Web page links built from tracker list Base URLs
  7547.     -   Only build and sort tracker list once
  7548.     -   Add anonymityWeb tracker to default list
  7549.     -   Add tooltip info for TrackerErrs
  7550.     -   Stop torrent if not registered with tracker
  7551.     -   Mark temp files as delete on exit
  7552.  
  7553. 2007-03-18  zzz
  7554.     * i2psnark: Cleanup some handling of saved partial pieces
  7555.     * i2psnark: Put bit counting in Bitfield.java for efficiency
  7556.     * i2psnark: Save torrent completion state in i2psnark.config
  7557.  
  7558. * 2007-03-17  0.6.1.28 released
  7559.  
  7560. 2007-03-13  zzz
  7561.     * i2psnark: Make max total uploaders configurable (thanks Amiga4000!)
  7562.  
  7563. 2007-03-12  jrandom
  7564.     * dodge a race on startup (thanks zzz!)
  7565.  
  7566. 2007-03-10  zzz
  7567.     * Streaming lib: Change initial RTT deviation from RTT to RTT/2
  7568.       (RFC 2988) to reduce early RTO values
  7569.  
  7570. 2007-03-08  zzz
  7571.     * i2psnark changes to improve upload performance:
  7572.     *  Implement total uploader limit (10)
  7573.     *  Don't timeout non-piece messages out
  7574.     *  Change chunk size to 32K (was 64K)
  7575.     *  Change request limit to 64K (was 256K)
  7576.     * i2psnark: Disconnect from seeds when complete
  7577.  
  7578. 2007-03-07  zzz
  7579.     * Remove dynamic router keys from config.jsp
  7580.  
  7581. 2007-03-07  zzz
  7582.     * Streaming lib changes to improve upstream performance during congestion:
  7583.     *   Change min window size from 12 to 1
  7584.     *   Change max timeout from 10 to 45 sec
  7585.     *   Change initial timeout from 10 to 15 sec
  7586.     *   Change intial window size for i2psnark from 12 to 1
  7587.     *   Change slow start growth rate for i2psnark from 1/2 to 1
  7588.  
  7589. 2007-03-04  zzz
  7590.     * Update eepsite_index.html
  7591.  
  7592. 2007-03-03  zzz
  7593.     * Upgrade from Jetty 5.1.6 to 5.1.12 which fixes spaces in URL
  7594.     * Add a updaterWithJetty build target
  7595.  
  7596. 2007-03-03  zzz
  7597.     * Implement priority sending for NTCP
  7598.     * Disable trimForOverload() in tunnel BuildExecutor which
  7599.       was preventing tunnel builds when outbound traffic was high
  7600.       (i.e. most of the time when running i2psnark)
  7601.  
  7602. 2007-02-28  zzz
  7603.     * i2psnark: File reopen cleanup
  7604.  
  7605. 2007-02-28  zzz
  7606.     * i2psnark: Add peer details to web page
  7607.  
  7608. * 2007-02-15  0.6.1.27 released
  7609.  
  7610. 2007-02-15  jrandom
  7611.     * Limit the whispering floodfill sends to at most 3 randomly
  7612.       chosen from the known floodfill peers
  7613.  
  7614. 2007-02-14  jrandom
  7615.     * Don't filter out KICK and H(ide oper status) IRC messages
  7616.       (thanks Takk and postman!)
  7617.  
  7618. 2007-02-13  jrandom
  7619.     * Tell our peers about who we know in the floodfill netDb every
  7620.       6 hours or so, mitigating the situation where peers lose track
  7621.       of floodfill routers.
  7622.     * Disable the Syndie updater (people should use the new Syndie,
  7623.       not this one)
  7624.     * Disable the eepsite tunnel by default
  7625.  
  7626. 2007-01-30  zzz
  7627.     * i2psnark: Don't hold _snarks lock while checking a snark,
  7628.       so web page is responsive at startup
  7629.  
  7630. 2007-01-29  zzz
  7631.     * i2psnark: Add NickyB tracker
  7632.  
  7633. 2007-01-28  zzz
  7634.     * i2psnark: Don't hold sendQueue lock while flushing output,
  7635.       to make everything run smoother
  7636.  
  7637. 2007-01-27  zzz
  7638.     * i2psnark: Fix orphaned Snark reader tasks leading to OOMs
  7639.  
  7640. 2007-01-20  Complication
  7641.     * Drop overlooked comment
  7642.  
  7643. 2007-01-20  Complication
  7644.     * Modify ReseedHandler to query the "i2p.reseedURL" property from I2PAppContext
  7645.       instead of System, so setting a reseed URL in advanced configuration has effect.
  7646.     * Clean out obsolete reseed code from ConfigNetHandler.
  7647.  
  7648. 2007-01-20  zzz
  7649.     * i2psnark: More choking rotation tweaks
  7650.     * Improve performance by not reading in the whole
  7651.       piece from disk for each request. A huge memory savings
  7652.       on 1MB torrents with many peers.
  7653.  
  7654. 2007-01-17  zzz
  7655.     * Add new HTTP Proxy error message for non-http protocols
  7656.  
  7657. 2007-01-17  zzz
  7658.     * Add note on Syndie index.html steering people to new Syndie
  7659.  
  7660. 2007-01-16  zzz
  7661.     * i2psnark: Fix crash when autostart off and
  7662.       tcrrent started manually
  7663.  
  7664. 2007-01-16  zzz
  7665.     * i2psnark: Fix bug caused by last i2psnark checkin
  7666.       (ConnectionAcceptor not started)
  7667.     * Don't start PeerCoordinator, ConnectionAcceptor,
  7668.       and TrackerClient unless starting torrent
  7669.  
  7670. 2007-01-15  jrandom
  7671.     * small guard against unnecessary streaming lib reset packets
  7672.       (thanks Complication!)
  7673.  
  7674. 2007-01-15  zzz
  7675.     * i2psnark: Add 'Stop All' link on web page
  7676.     * Add some links to trackers and forum on web page
  7677.     * Don't start tunnel if 'Autostart' unchecked
  7678.     * Fix torrent restart bug by reopening file descriptors
  7679.  
  7680. 2007-01-14  zzz
  7681.     * i2psnark: Improvements for torrents with > 4 leechers:
  7682.       choke based on upload rate when seeding, and
  7683.       be smarter and fairer about rotating choked peers.
  7684.     * Handle two common i2psnark OOM situations rather
  7685.       than shutting down the whole thing.
  7686.     * Fix reporting to tracker of remaining bytes for
  7687.       torrents > 4GB (but ByteMonsoon still has a bug)
  7688.  
  7689. 2006-10-29  zzz
  7690.     * i2psnark: Fix and enable generation of multifile torrents,
  7691.       print error if no tracker selected at create-torrent,
  7692.       fix stopping a torrent that hasn't started successfully,
  7693.       add eBook and GayTorrents trackers to form,
  7694.       web page formatting tweaks
  7695.  
  7696. * 2006-10-10  0.6.1.26 released
  7697.  
  7698. 2006-10-29  Complication
  7699.     * Ensure we get NTP samples from more diverse sources
  7700.       (0.pool.ntp.org, 1.pool.ntp.org, etc)
  7701.     * Discard median-based peer skew calculator as framed average works,
  7702.       and adjusting its percentage can make it behave median-like
  7703.     * Require more data points (from at least 20 peers)
  7704.       before considering a peer skew measurement reliable
  7705.  
  7706. 2006-10-10  jrandom
  7707.     * Removed the status display from the console, as its more confusing
  7708.       than informative (though the content is still displayed in the HTML)
  7709.  
  7710. 2006-10-08  Complication
  7711.     * Add a framed average peer clock skew calculator
  7712.     * Add config property "router.clockOffsetSanityCheck" to determine
  7713.       if NTP-suggested clock offsets get sanity checked (default "true")
  7714.     * Reject NTP-suggested clock offsets if they'd increase peer clock skew
  7715.       by more than 5 seconds, or make it more than 20 seconds total
  7716.     * Decrease log level in getMedianPeerClockSkew()
  7717.  
  7718. 2006-09-29  zzz
  7719.     * i2psnark: Second try at synchronization fix - synch addRequest()
  7720.       completely rather than just portions of it and requestNextPiece()
  7721.  
  7722. 2006-09-27  jrandom
  7723.     * added HMAC-SHA256
  7724.     * properly use CRLF with EepPost
  7725.     * suppress jbigi/jcpuid messages if jbigi.dontLog/jcpuid.dontLog is set
  7726.     * PBE session key generation (with 1000 rounds of SHA256)
  7727.     * misc SDK helper functions
  7728.  
  7729. 2006-09-26  Complication
  7730.     * Take back another inadverent logging change in NTCPConnection
  7731.  
  7732. 2006-09-26  Complication
  7733.     * Take back an accidental log level change
  7734.  
  7735. 2006-09-26  Complication
  7736.     * Subclass from Clock a RouterClock which can access router transports,
  7737.       with the goal of developing it to second-guess NTP results
  7738.     * Make transports report clock skew in seconds
  7739.     * Adjust renderStatusHTML() methods accordingly
  7740.     * Show average for NTCP clock skews too
  7741.     * Give transports a getClockSkews() method to report clock skews
  7742.     * Give transport manager a getClockSkews() method to aggregate results
  7743.     * Give comm system facade a getMedianPeerClockSkew() method which RouterClock calls
  7744.       (to observe results, add "net.i2p.router.transport.CommSystemFacadeImpl=WARN" to logging)
  7745.     * Extra explicitness in NTCP classes to denote unit of time.
  7746.     * Fix some places in NTCPConnection where milliseconds and seconds were confused
  7747.  
  7748. 2006-09-25  zzz
  7749.     * i2psnark: Paranoid copy before writing pieces,
  7750.       recheck files on completion, redownload bad pieces
  7751.     * i2psnark: Don't contact tracker as often when seeding
  7752.  
  7753. 2006-09-24  zzz
  7754.     * i2psnark: Add some synchronization to prevent rare problem
  7755.       after restoring orphan piece
  7756.  
  7757. 2006-09-20  zzz
  7758.     * i2psnark: Eliminate duplicate requests caused by i2p-bt's
  7759.       rapid choke/unchokes
  7760.     * i2psnark: Truncate long TrackerErr messages on web page
  7761.  
  7762. 2006-09-16  zzz
  7763.     * i2psnark: Implement retransmission of requests. This
  7764.       eliminates one cause of complete stalls with a peer.
  7765.       This problem is common on torrents with a small number of
  7766.       active peers where there are no choke/unchokes to kickstart things.
  7767.  
  7768. 2006-09-13  zzz
  7769.     * i2psnark: Fix restoral of partial pieces broken by last patch
  7770.  
  7771. 2006-09-13  zzz
  7772.     * i2psnark: Mark a peer's requests as unrequested on disconnect,
  7773.       preventing premature end game
  7774.     * i2psnark: Randomize selection of next piece during end game
  7775.     * i2psnark: Don't restore a partial piece to a peer that is already working on it
  7776.     * i2psnark: strip ".torrent" on web page
  7777.     * i2psnark: Limit piece size in generated torrent to 1MB max
  7778.  
  7779. 2006-09-09  zzz
  7780.     * i2psnark: Add "Stalled" indication and stat totals on web page
  7781.  
  7782. 2006-09-09  zzz
  7783.     * i2psnark: Fix bug where new peers would always be sent an "interested"
  7784.       regardless of actual interest
  7785.     * i2psnark: Reduce max piece size from 10MB to 1MB; larger may have severe
  7786.       memory and efficiency problems
  7787.  
  7788. * 2006-09-09  0.6.1.25 released
  7789.  
  7790. 2006-09-08  jrandom
  7791.     * Tweak the PRNG logging so it only displays error messages if there are
  7792.       problems
  7793.     * Disable dynamic router keys for the time being, as they don't offer
  7794.       meaningful security, may hurt the router, and makes it harder to
  7795.       determine the network health.  The code to restart on SSU IP change is
  7796.       still enabled however.
  7797.     * Disable tunnel load testing, leaning back on the tiered selection for
  7798.       the time being.
  7799.     * Spattering of bugfixes
  7800.  
  7801. 2006-09-07  zzz
  7802.     * i2psnark: Increase output timeout from 2 min to 4 min
  7803.     * i2psnark: Orphan debug msg cleanup
  7804.     * i2psnark: More web rate report cleanup
  7805.  
  7806. 2006-09-05  zzz
  7807.     * i2psnark: Implement basic partial-piece saves across connections
  7808.     * i2psnark: Implement keep-alive sending. This will keep non-i2psnark clients
  7809.       from dropping us for inactivity but also renders the 2-minute transmit-inactivity
  7810.       code in i2psnark ineffective. Will have to research why there is transmit but
  7811.       not receive inactivity code. With the current connection limit of 24 peers
  7812.       we aren't in any danger of keeping out new peers by keeping inactive ones.
  7813.     * i2psnark: Increase CHECK_PERIOD from 20 to 40 since nothing happens in 20 seconds
  7814.     * i2psnark: Fix dropped chunk handling
  7815.     * i2psnark: Web rate report cleanup
  7816.  
  7817. 2006-09-04  zzz
  7818.     * i2psnark: Report cleared trackerErr immediately
  7819.     * i2psnark: Add trackerErr reporting after previous success; retry more quickly
  7820.     * i2psnark: Set up new connections more quickly
  7821.     * i2psnark: Don't delay tracker fetch when setting up lots of connections
  7822.     * i2psnark: Reduce MAX_UPLOADERS from 12 to 4
  7823.  
  7824. 2006-09-04  zzz
  7825.     * Enable pipelining in i2psnark
  7826.     * Make i2psnark tunnel default be 1 + 0-1
  7827.  
  7828. 2006-09-03  zzz
  7829.     * Add rate reporting to i2psnark
  7830.  
  7831. 2006-09-03  Complication
  7832.     * Limit form size in SusiDNS to avoid exceeding a POST size limit on postback
  7833.     * Print messages about addressbook size to give better overview
  7834.     * Enable delete function in published addressbook
  7835.  
  7836. 2006-08-21  Complication
  7837.     * Fix error reporting discrepancy (thanks for helping notice, yojoe!)
  7838.  
  7839. 2006-08-03  jrandom
  7840.     * Decrease the recently modified tunnel building timeout, though keep
  7841.       the scaling on their processing
  7842.  
  7843. 2006-07-31  jrandom
  7844.     * Increase the tunnel building timeout
  7845.     * Avoid a rare race (thanks bar!)
  7846.     * Fix the bandwidth capacity publishing code to factor in share percentage
  7847.       and outbound throttling (oops)
  7848.  
  7849. 2006-07-29  Complication
  7850.     * Treat NTP responses from unexpected stratums like failures
  7851.  
  7852. * 2006-07-28  0.6.1.24 released
  7853.  
  7854. 2006-07-28  jrandom
  7855.     * Don't try to reverify too many netDb entries at once (thanks
  7856.       cervantes and Complication!)
  7857.  
  7858. 2006-07-28  jrandom
  7859.     * Actually fix the threading deadlock issue in the netDb (removing
  7860.       the synchronized access to individual kbuckets while validating
  7861.       individual entries) (thanks cervantes, postman, frosk, et al!)
  7862.  
  7863. * 2006-07-27  0.6.1.23 released
  7864.  
  7865. 2006-07-27  jrandom
  7866.     * Cut down NTCP connection establishments once we know the peer is skewed
  7867.       (rather than wait for full establishment before verifying)
  7868.     * Removed a lock on the stats framework when accessing rates, which
  7869.       shouldn't be a problem, assuming rates are created (pretty much) all at
  7870.       once and merely updated during the lifetime of the jvm.
  7871.  
  7872. 2006-07-27  jrandom
  7873.     * Further NTCP write status cleanup
  7874.     * Handle more oddly-timed NTCP disconnections (thanks bar!)
  7875.  
  7876. 2006-07-26  jrandom
  7877.     * When dropping a netDb router reference, only accept newer
  7878.       references as part of the update check
  7879.     * If we have been up for a while, don't accept really old
  7880.       router references (published 2 or more days ago)
  7881.     * Drop router references once they are no longer valid, even if
  7882.       they were allowed in due to the lax restrictions on startup
  7883.  
  7884. 2006-07-26  jrandom
  7885.     * Every time we create a new router identity, add an entry to the
  7886.       new "identlog.txt" text file in the I2P install directory.  For
  7887.       debugging purposes, publish the count of how many identities the
  7888.       router has cycled through, though not the identities itself.
  7889.     * Cleaned up the way the multitransport shitlisting worked, and
  7890.       added per-transport shitlists
  7891.     * When dropping a router reference locally, first fire a netDb
  7892.       lookup for the entry
  7893.     * Take the peer selection filters into account when organizing the
  7894.       profiles (thanks Complication!)
  7895.     * Avoid some obvious configuration errors for the NTCP transport
  7896.       (invalid ports, "null" ip, etc)
  7897.     * Deal with some small NTCP bugs found in the wild (unresolveable
  7898.       hosts, strange network discons, etc)
  7899.     * Send our netDb info to peers we have direct NTCP connections to
  7900.       after each 6-12 hours of connection uptime
  7901.     * Clean up the NTCP reading and writing queue logic to avoid some
  7902.       potential delays
  7903.     * Allow people to specify the IP that the SSU transport binds on
  7904.       locally, via the advanced config "i2np.udp.bindInterface=1.2.3.4"
  7905.  
  7906. * 2006-07-18  0.6.1.22 released
  7907.  
  7908. 2006-07-18  jrandom
  7909.     * Add a failsafe to the NTCP transport to make sure we keep
  7910.       pumping writes when we should.
  7911.     * Properly reallow 16-32KBps routers in the default config
  7912.       (thanks Complication!)
  7913.  
  7914. 2006-07-16  Complication
  7915.     * Collect tunnel build agree/reject/expire statistics
  7916.       for each bandwidth tier of peers (and peers of unknown tiers,
  7917.       even if those shouldn't exist)
  7918.  
  7919. 2006-07-14  jrandom
  7920.     * Improve the multitransport shitlisting (thanks Complication!)
  7921.     * Allow routers with a capacity of 16-32KBps to be used in tunnels under
  7922.       the default configuration (thanks for the stats Complication!)
  7923.     * Properly allow older router references to load on startup
  7924.       (thanks bar, Complication, et al!)
  7925.     * Add a new "i2p.alwaysAllowReseed" advanced config property, though
  7926.       hopefully today's changes should make this unnecessary (thanks void!)
  7927.     * Improved NTCP buffering
  7928.     * Close NTCP connections if we are too backlogged when writing to them
  7929.  
  7930. 2006-07-04  jrandom
  7931.     * New NIO-based tcp transport (NTCP), enabled by default for outbound
  7932.       connections only.  Those who configure their NAT/firewall to allow
  7933.       inbound connections and specify the external host and port
  7934.       (dyndns/etc is ok) on /config.jsp can receive inbound connections.
  7935.       SSU is still enabled for use by default for all users as a fallback.
  7936.     * Substantial bugfix to the tunnel gateway processing to transfer
  7937.       messages sequentially instead of interleaved
  7938.     * Renamed GNU/crypto classes to avoid name clashes with kaffe and other
  7939.       GNU/Classpath based JVMs
  7940.     * Adjust the Fortuna PRNG's pooling system to reduce contention on
  7941.       refill with a background thread to refill the output buffer
  7942.     * Add per-transport support for the shitlist
  7943.     * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
  7944.       contention
  7945.  
  7946. 2006-07-01  Complication
  7947.     * Ensure that the I2PTunnel web interface won't update tunnel settings
  7948.       for shared clients when a non-shared client is modified
  7949.       (thanks for spotting, BarkerJr!)
  7950.  
  7951. 2006-06-14  cervantes
  7952.     * Small tweak to I2PTunnel CSS, so it looks better with desktops
  7953.       that use Bitstream Vera fonts @ 96 dpi
  7954.  
  7955. * 2006-06-14  0.6.1.21 released
  7956.  
  7957. 2006-06-13  jrandom
  7958.     * Use a minimum uptime of 2 hours, not 4 (oops)
  7959.  
  7960. 2006-06-13  jrandom
  7961.     * Cut down the proactive rejections due to queue size - if we are
  7962.       at the point of having decrypted the request off the queue, might
  7963.       as well let it through, rather than waste that decryption
  7964.  
  7965. 2006-06-11  Kloug
  7966.     * Bugfix to the I2PTunnel IRC filter to support multiple concurrent
  7967.       outstanding pings/pongs
  7968.  
  7969. 2006-06-10  jrandom
  7970.     * Further reduction in proactive rejections
  7971.  
  7972. 2006-06-09  jrandom
  7973.     * Don't let the pending tunnel request queue grow beyond reason
  7974.       (letting things sit for up to 30s when they fail after 10s
  7975.       seems a bit... off)
  7976.  
  7977. 2006-06-08  jrandom
  7978.     * Be more conservative in the proactive rejections
  7979.  
  7980. 2006-06-04  Complication
  7981.     * Trim out sending a blank line before USER in susimail.
  7982.       Seemed to break in rare cases, thanks for reporting, Brachtus!
  7983.  
  7984. * 2006-06-04  0.6.1.20 released
  7985.  
  7986. 2006-06-04  jrandom
  7987.     * Reduce the SSU ack frequency
  7988.     * Tweaked the tunnel rejection settings to reject less aggressively
  7989.  
  7990. 2006-05-31  jrandom
  7991.     * Only send netDb searches to the floodfill peers for the time being
  7992.     * Add some proof of concept filters for tunnel participation.  By default,
  7993.       it will skip peers with an advertised bandwith of less than 32KBps or
  7994.       an advertised uptime of less than 2 hours.  If this is sufficient, a
  7995.       safer implementation of these filters will be implemented.
  7996.  
  7997. * 2006-05-18  0.6.1.19 released
  7998.  
  7999. 2006-05-18  jrandom
  8000.     * Made the SSU ACKs less frequent when possible
  8001.  
  8002. 2006-05-17  Complication
  8003.     * Fix some oversights in my previous changes:
  8004.       adjust some loglevels, make a few statements less wasteful,
  8005.       make one comparison less confusing and more likely to log unexpected values
  8006.  
  8007. 2006-05-17  jrandom
  8008.     * Make the peer page sortable
  8009.     * SSU modifications to cut down on unnecessary connection failures
  8010.  
  8011. 2006-05-16  jrandom
  8012.     * Further shitlist randomizations
  8013.     * Adjust the stats monitored for detecting cpu overload when dropping new
  8014.       tunnel requests
  8015.  
  8016. 2006-05-15  jrandom
  8017.     * Add a load dependent throttle on the pending inbound tunnel request
  8018.       backlog
  8019.     * Increased the tunnel test failure slack before killing a tunnel
  8020.  
  8021. 2006-05-13  Complication
  8022.     * Separate growth factors for tunnel count and tunnel test time
  8023.     * Reduce growth factors, so probabalistic throttle would activate
  8024.     * Square probAccept values to decelerate stronger when far from average
  8025.     * Create a bandwidth stat with approximately 15-second half life
  8026.     * Make allowTunnel() check the 1-second bandwidth for overload
  8027.       before doing allowance calculations using 15-second bandwidth
  8028.     * Tweak the overload detector in BuildExecutor to be more sensitive
  8029.       for rising edges, add ability to initiate tunnel drops
  8030.     * Add a function to seek and drop the highest-rate participating tunnel,
  8031.       keeping a fixed+random grace period between such drops.
  8032.       It doesn't seem very effective, so disabled by default
  8033.       ("router.dropTunnelsOnOverload=true" to enable)
  8034.  
  8035. 2006-05-11  jrandom
  8036.     * PRNG bugfix (thanks cervantes and Complication!)
  8037.  
  8038. * 2006-05-09  0.6.1.18 released
  8039.  
  8040. 2006-05-09  jrandom
  8041.     * Further tunnel creation timeout revamp
  8042.  
  8043. 2006-05-07  Complication
  8044.     * Fix problem whereby repeated calls to allowed() would make
  8045.       the 1-tunnel exception permit more than one concurrent build
  8046.  
  8047. 2006-05-06  jrandom
  8048.     * Readjust the tunnel creation timeouts to reject less but fail earlier,
  8049.       while tracking the extended timeout events.
  8050.  
  8051. 2006-05-04  jrandom
  8052.     * Short circuit a highly congested part of the stat logging unless its
  8053.       required (may or may not help with a synchronization issue reported by
  8054.       andreas)
  8055.  
  8056. 2006-05-03  Complication
  8057.     * Allow a single build attempt to proceed despite 1-minute overload
  8058.       only if the 1-second rate shows enough spare bandwidth
  8059.       (e.g. overload has already eased)
  8060.  
  8061. 2006-05-02  Complication
  8062.     * Correct a misnamed property in SummaryHelper.java
  8063.       to avoid confusion
  8064.     * Make the maximum allowance of our own concurrent
  8065.       tunnel builds slightly adaptive: one concurrent build per 6 KB/s
  8066.       within the fixed range 2..10
  8067.     * While overloaded, try to avoid completely choking our own build attempts,
  8068.       instead prefer limiting them to 1
  8069.  
  8070. 2006-05-01  jrandom
  8071.     * Adjust the tunnel build timeouts to cut down on expirations, and
  8072.       increased the SSU connection establishment retransmission rate to
  8073.       something less glacial.
  8074.     * For the first 5 minutes of uptime, be less aggressive with tunnel
  8075.       exploration, opting for more reliable peers to start with.
  8076.  
  8077. 2006-05-01  jrandom
  8078.     * Fix for a netDb lookup race (thanks cervantes!)
  8079.  
  8080. 2006-04-27  jrandom
  8081.     * Avoid a race in the message reply registry (thanks cervantes!)
  8082.  
  8083. 2006-04-27  jrandom
  8084.     * Fixed the tunnel expiration desync code (thanks Complication!)
  8085.  
  8086. * 2006-04-23  0.6.1.17 released
  8087.  
  8088. 2006-04-19  jrandom
  8089.     * Adjust how we pick high capacity peers to allow the inclusion of fast
  8090.       peers (the previous filter assumed an old usage pattern)
  8091.     * New set of stats to help track per-packet-type bandwidth usage better
  8092.     * Cut out the proactive tail drop from the SSU transport, for now
  8093.     * Reduce the frequency of tunnel build attempts while we're saturated
  8094.     * Don't drop tunnel requests as easily - prefer to explicitly reject them
  8095.  
  8096. * 2006-04-15  0.6.1.16 released
  8097.  
  8098. 2006-04-15  jrandom
  8099.     * Adjust the proactive tunnel request dropping so we will reject what we
  8100.       can instead of dropping so much (but still dropping if we get too far
  8101.       overloaded)
  8102.  
  8103. 2006-04-14  jrandom
  8104.     * 0 isn't very random
  8105.     * Adjust the tunnel drop to be more reasonable
  8106.  
  8107. 2006-04-14  jrandom
  8108.     * -28.00230115311259 is not between 0 and 1 in any universe I know.
  8109.     * Made the bw-related tunnel join throttle much simpler
  8110.  
  8111. 2006-04-14  jrandom
  8112.     * Make some more stats graphable, and allow some internal tweaking on the
  8113.       tunnel pairing for creation and testing.
  8114.  
  8115. * 2006-04-13  0.6.1.15 released
  8116.  
  8117. 2006-04-12  jrandom
  8118.     * Added a further failsafe against trying to queue up too many messages to
  8119.       a peer.
  8120.  
  8121. 2006-04-12  jrandom
  8122.     * Watch out for failed syndie index fetches (thanks bar!)
  8123.  
  8124. 2006-04-11  jrandom
  8125.     * Throttling improvements on SSU - throttle all transmissions to a peer
  8126.       when we are retransmitting, not just retransmissions.  Also, if
  8127.       we're already retransmitting to a peer, probabalistically tail drop new
  8128.       messages targetting that peer, based on the estimated wait time before
  8129.       transmission.
  8130.     * Fixed the rounding error in the inbound tunnel drop probability.
  8131.  
  8132. 2006-04-10  jrandom
  8133.     * Include a combined send/receive graph (good idea cervantes!)
  8134.     * Proactively drop inbound tunnel requests probabalistically as the
  8135.       estimated queue time approaches our limit, rather than letting them all
  8136.       through up to that limit.
  8137.  
  8138. 2006-04-08  jrandom
  8139.     * Stat summarization fix (removing the occational holes in the jrobin
  8140.       graphs)
  8141.  
  8142. 2006-04-08  jrandom
  8143.     * Process inbound tunnel requests more efficiently
  8144.     * Proactively drop inbound tunnel requests if the queue before we'd
  8145.       process it in is too long (dynamically adjusted by cpu load)
  8146.     * Adjust the tunnel rejection throttle to reject requeusts when we have to
  8147.       proactively drop too many requests.
  8148.     * Display the number of pending inbound tunnel join requests on the router
  8149.       console (as the "handle backlog")
  8150.     * Include a few more stats in the default set of graphs
  8151.  
  8152. 2006-04-06  jrandom
  8153.     * Fix for a bug in the new irc ping/pong filter (thanks Complication!)
  8154.  
  8155. 2006-04-06  jrandom
  8156.     * Fixed a typo in the reply cleanup code
  8157.  
  8158. * 2006-04-05  0.6.1.14 released
  8159.  
  8160. 2006-04-05  jrandom
  8161.     * Cut down on the time that we allow a tunnel creation request to sit by
  8162.       without response, and reject tunnel creation requests that are lagged
  8163.       locally.  Also switch to a bounded FIFO instead of a LIFO
  8164.     * Threading tweaks for the message handling (thanks bar!)
  8165.     * Don't add addresses to syndie with blank names (thanks Complication!)
  8166.     * Further ban clearance
  8167.  
  8168. 2006-04-05  jrandom
  8169.     * Fix during the ssu handshake to avoid an unnecessary failure on
  8170.       packet retransmission (thanks ripple!)
  8171.     * Fix during the SSU handshake to use the negotiated session key asap,
  8172.       rather than using the intro key for more than we should (thanks ripple!)
  8173.     * Fixes to the message reply registry (thanks Complication!)
  8174.     * More comprehensive syndie banning (for repeated pushes)
  8175.     * Publish the router's ballpark bandwidth limit (w/in a power of 2), for
  8176.       testing purposes
  8177.     * Put a floor back on the capacity threshold, so too many failing peers
  8178.       won't cause us to pick very bad peers (unless we have very few good
  8179.       ones)
  8180.     * Bugfix to cut down on peers using introducers unneessarily (thanks
  8181.       Complication!)
  8182.     * Reduced the default streaming lib message size to fit into a single
  8183.       tunnel message, rather than require 5 tunnel messages to be transferred
  8184.       without loss before recomposition.  This reduces throughput, but should
  8185.       increase reliability, at least for the time being.
  8186.     * Misc small bugfixes in the router (thanks all!)
  8187.     * More tweaking for Syndie's CSS (thanks Doubtful Salmon!)
  8188.  
  8189. 2006-04-01  jrandom
  8190.     * Take out the router watchdog's teeth (don't restart on leaseset failure)
  8191.     * Filter the IRC ping/pong messages, as some clients send unsafe
  8192.       information in them (thanks aardvax and dust!)
  8193.  
  8194. 2006-03-30  jrandom
  8195.     * Substantially reduced the lock contention in the message registry (a
  8196.       major hotspot that can choke most threads).  Also reworked the locking
  8197.       so we don't need per-message timer events
  8198.     * No need to have additional per-peer message clearing, as they are
  8199.       either unregistered individually or expired.
  8200.     * Include some of the more transient tunnel throttling
  8201.  
  8202. * 2006-03-26  0.6.1.13 released
  8203.  
  8204. 2006-03-25  jrandom
  8205.     * Added a simple purge and ban of syndie authors, shown as the
  8206.       "Purge and ban" button on the addressbook for authors that are already
  8207.       on the ignore list.  All of their entries and metadata are deleted from
  8208.       the archive, and the are transparently filtered from any remote
  8209.       syndication (so no user on the syndie instance will pull any new posts
  8210.       from them)
  8211.     * More strict tunnel join throtting when congested
  8212.  
  8213. 2006-03-24  jrandom
  8214.     * Try to desync tunnel building near startup (thanks Complication!)
  8215.     * If we are highly congested, fall back on only querying the floodfill
  8216.       netDb peers, and only storing to those peers too
  8217.     * Cleaned up the floodfill-only queries
  8218.  
  8219. 2006-03-21  jrandom
  8220.     * Avoid a very strange (unconfirmed) bug that people using the systray's
  8221.       browser picker dialog could cause by disabling the GUI-based browser
  8222.       picker.
  8223.     * Cut down on subsequent streaming lib reset packets transmitted
  8224.     * Use a larger MTU more often
  8225.     * Allow netDb searches to query shitlisted peers, as the queries are
  8226.       indirect.
  8227.     * Add an option to disable non-floodfill netDb searches (non-floodfill
  8228.       searches are used by default, but can be disabled by adding
  8229.       netDb.floodfillOnly=true to the advanced config)
  8230.  
  8231. 2006-03-20  jrandom
  8232.     * Fix to allow for some slack when coalescing stats
  8233.     * Workaround some oddball errors
  8234.  
  8235. 2006-03-18  jrandom
  8236.     * Added a new graphs.jsp page to show all of the stats being harvested
  8237.  
  8238. 2006-03-18  jrandom
  8239.     * Made the netDb search load limitations a little less stringent
  8240.     * Add support for specifying the number of periods to be plotted on the
  8241.       graphs - e.g. to plot only the last hour of a stat that is averaged at
  8242.       the 60 second period, add &periodCount=60
  8243.  
  8244. 2006-03-17  jrandom
  8245.     * Add support for graphing the event count as well as the average stat
  8246.       value (done by adding &showEvents=true to the URL).  Also supports
  8247.       hiding the legend (&hideLegend=true), the grid (&hideGrid=true), and
  8248.       the title (&hideTitle=true).
  8249.     * Removed an unnecessary arbitrary filter on the profile organizer so we
  8250.       can pick high capacity and fast peers more appropriately
  8251.  
  8252. 2006-03-16  jrandom
  8253.     * Integrate basic hooks for jrobin (http://jrobin.org) into the router
  8254.       console.  Selected stats can be harvested automatically and fed into
  8255.       in-memory RRD databases, and those databases can be served up either as
  8256.       PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for
  8257.       details).  A base set of stats are harvested by default, but an
  8258.       alternate list can be specified by setting the 'stat.summaries' list on
  8259.       the advanced config.  For instance:
  8260.       stat.summaries=bw.recvRate.60000,bw.sendRate.60000
  8261.     * HTML tweaking for the general config page (thanks void!)
  8262.     * Odd NPE fix (thanks Complication!)
  8263.  
  8264. 2006-03-15  Complication
  8265.     * Trim out an old, inactive IP second-guessing method
  8266.       (thanks for spotting, Anonymous!)
  8267.  
  8268. 2006-03-15  jrandom
  8269.     * Further stat cleanup
  8270.     * Keep track of how many peers we are actively trying to communicate with,
  8271.       beyond those who are just trying to communicate with us.
  8272.     * Further router tunnel participation throttle revisions to avoid spurious
  8273.       rejections
  8274.     * Rate stat display cleanup (thanks ripple!)
  8275.     * Don't even try to send messages that have been queued too long
  8276.  
  8277. 2006-03-05  zzz
  8278.     * Remove the +++--- from the logs on i2psnark startup
  8279.  
  8280. 2006-03-05  jrandom
  8281.     * HTML fixes in Syndie to work better with opera (thanks shaklen!)
  8282.     * Give netDb lookups to floodfill peers more time, as they are much more
  8283.       likely to succeed (thereby cutting down on the unnecessary netDb
  8284.       searches outside the floodfill set)
  8285.     * Fix to the SSU IP detection code so we won't use introducers when we
  8286.       don't need them (thanks Complication!)
  8287.     * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
  8288.       peers given to it
  8289.     * Don't let netDb searches wander across too many peers
  8290.     * Don't use the 1s bandwidth usage in the tunnel participation throttle,
  8291.       as its too volatile to have much meaning.
  8292.     * Don't bork if a Syndie post is missing an entry.sml
  8293.  
  8294. 2006-03-05  Complication
  8295.     * Reduce exposed statistical information,
  8296.       to make build and uptime tracking more expensive
  8297.  
  8298. 2006-03-04  Complication
  8299.     * Fix the announce URL of orion's tracker in Snark sources
  8300.  
  8301. 2006-03-03  Complication
  8302.     * Explicit check for an index out of bounds exception while parsing
  8303.       an inbound IRC command (implicit check was there already)
  8304.  
  8305. 2006-03-01  jrandom
  8306.     * More aggressive tunnel throttling as we approach our bandwidth limit,
  8307.       and throttle based off periods wider than 1 second.
  8308.     * Included Doubtful Salmon's syndie stylings (thanks!)
  8309.  
  8310. 2006-02-27  zzz
  8311.     * Update error page templates to add \r, Connection: close, and
  8312.       Proxy-connection: close to headers.
  8313.  
  8314. * 2006-02-27  0.6.1.12 released
  8315.  
  8316. 2006-02-27  jrandom
  8317.     * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
  8318.       machines, rather than the generic jbigi (until we have an athlon64
  8319.       optimized version)
  8320.  
  8321. 2006-02-26  jrandom
  8322.     * Switch from the bouncycastle to the gnu-crypto implementation for
  8323.       SHA256, as benchmarks show a 10-30% speedup.
  8324.     * Removed some unnecessary object caches
  8325.     * Don't close i2psnark streams prematurely
  8326.  
  8327. 2006-02-25  jrandom
  8328.     * Made the Syndie permalinks in the thread view point to the blog view
  8329.     * Disabled TCP again (since the live net seems to be doing well w/out it)
  8330.     * Fix the message time on inbound SSU establishment (thanks zzz!)
  8331.     * Don't be so aggressive with parallel tunnel creation when a tunnel pool
  8332.       just starts up
  8333.  
  8334. 2006-02-24  jrandom
  8335.     * Rounding calculation cleanup in the stats, and avoid an uncontested
  8336.       mutex (thanks ripple!)
  8337.     * SSU handshake cleanup to help force incompatible peers to stop nagging
  8338.       us by both not giving them an updated reference to us and by dropping
  8339.       future handshake packets from them.
  8340.  
  8341. 2006-02-23  jrandom
  8342.     * Increase the SSU retransmit ceiling (for slow links)
  8343.     * Estimate the sender's SSU MTU (to help see if we agree)
  8344.  
  8345. 2006-02-22  jrandom
  8346.     * Fix to properly profile tunnel joins (thanks Ragnarok, frosk, et al!)
  8347.     * More aggressive poor-man's PMTU, allowing larger MTUs on less reliable
  8348.       links
  8349.     * Further class validator refactorings
  8350.  
  8351. 2006-02-22  jrandom
  8352.     * Handle a rare race under high bandwidth situations in the SSU transport
  8353.     * Minor refactoring so we don't confuse sun's 1.6.0-b2 validator
  8354.  
  8355. 2006-02-21  Complication
  8356.     * Reactivate TCP tranport by default, in addition to re-allowing
  8357.  
  8358. * 2006-02-21  0.6.1.11 released
  8359.  
  8360. 2006-02-21  jrandom
  8361.     * Throttle the outbound SSU establishment queue, so it doesn't fill up the
  8362.       heap when backlogged (and so that the messages queued up on it don't sit
  8363.       there forever)
  8364.     * Further SSU memory cleanup
  8365.     * Clean up the address regeneration code so it knows when to rebuild the
  8366.       local info more precisely.
  8367.  
  8368. 2006-02-20  jrandom
  8369.     * Properly enable TCP this time (oops)
  8370.     * Deal with multiple form handlers on the same page in the console without
  8371.       being too annoying (thanks blubb and bd_!)
  8372.  
  8373. 2006-02-20  jrandom
  8374.     * Reenable the TCP transport as a fallback (we'll continue to muck with
  8375.       debugging SSU-only elsewhere)
  8376.  
  8377. 2006-02-20  jrandom
  8378.     * Major SSU and router tuning to reduce contention, memory usage, and GC
  8379.       churn.  There are still issues to be worked out, but this should be a
  8380.       substantial improvement.
  8381.     * Modified the optional netDb harvester task to support choosing whether
  8382.       to use (non-anonymous) direct connections or (anonymous) exploratory
  8383.       tunnels to do the harvesting.  Harvesting itself is enabled via the
  8384.       advanced config "netDb.shouldHarvest=true" (default is false) and the
  8385.       connection type can be chosen via "netDb.harvestDirectly=false" (default
  8386.       is false).
  8387.  
  8388. 2006-02-19  dust
  8389.     * Added pruning of suckers history (it used to grow indefinitely).
  8390.  
  8391. 2006-02-19  jrandom
  8392.     * Moved the current net's reseed URL to a different location than where
  8393.       the old net looks (dev.i2p.net/i2pdb2/ vs .../i2pdb/)
  8394.     * More aggressively expire inbound messages (on receive, not just on send)
  8395.     * Add in a hook for breaking backwards compatibility in the SSU wire
  8396.       protocol directly by including a version as part of the handshake.  The
  8397.       version is currently set to 0, however, so the wire protocol from this
  8398.       build is compatible with all earlier SSU implementations.
  8399.     * Increased the number of complete message readers, cutting down
  8400.       substantially on the delay processing inbound messages.
  8401.     * Delete the message history file on startup
  8402.     * Reworked the restart/shutdown display on the console (thanks bd_!)
  8403.  
  8404. 2006-02-18  jrandom
  8405.     * Migrate the outbound packets from a central component to the individual
  8406.       per-peer components, substantially cutting down on lock contention when
  8407.       dealing with higher degrees.
  8408.     * Load balance the outbound SSU transfers evenly across peers, rather than
  8409.       across messages (so peers with few messages won't be starved by peers
  8410.       with many).
  8411.     * Reduce the frequency of router info rebuilds (thanks bar!)
  8412.  
  8413. 2006-02-18  jrandom
  8414.     * Add a new AIMD throttle in SSU to control the number of concurrent
  8415.       messages being sent to a given peer, in addition to the throttle on the
  8416.       number of concurrent bytes to that peer.
  8417.     * Adjust the existing SSU outbound queue to throttle based on the queue's
  8418.       lag, not an arbitrary number of packets.
  8419.  
  8420. 2006-02-17  jrandom
  8421.     * Properly fix the build request queue throttling, using queue age to
  8422.       detect congestion, rather than queue size.
  8423.  
  8424. 2006-02-17  jrandom
  8425.     * Disable the message history log file by default (duh - feel free to
  8426.       delete messageHistory.txt after upgrading.  thanks deathfatty!)
  8427.     * Limit the size of the inbound tunnel build request queue so we don't
  8428.       get an insane backlog of requests that we're bound to reject, and adjust
  8429.       the queue processing so we keep on churning through them when we've got
  8430.       a backlog.
  8431.     * Small fixes for the multiuser syndie operation (thanks Complication!)
  8432.     * Renamed modified PRNG classes that were imported from gnu-crypto so we
  8433.       don't conflict with JVMs using that as a JCE provider (thanks blx!)
  8434.  
  8435. * 2006-02-16  0.6.1.10 released
  8436.  
  8437. 2006-02-16  jrandom
  8438.     * Add a new toggle to the web config to enable/disable the load testing
  8439.  
  8440. 2006-02-16  jrandom
  8441.     * Dropped much of the abandonware from the apps/ directory
  8442.  
  8443. 2006-02-16  jrandom
  8444.     * Bugfix to the I2PTunnel web config to properly accept i2cp port settings
  8445.     * Initial sucker refactoring to simplify reuse of the html parsing
  8446.     * Beginnings of hooks to push imported rss/atom out to remote syndie
  8447.       archives automatically (though not enabled currently)
  8448.     * Further SSU peer test cleanup
  8449.  
  8450. 2006-02-15  jrandom
  8451.     * Add in per-blog RSS feeds to Syndie
  8452.     * Upgraded sucker's ROME dependency to 0.8, bundling sucked enclosures
  8453.       with the posts, marking additional attachments as Media RSS enclosures
  8454.       (http://search.yahoo.com/mrss/), since RSS only supports one enclosure
  8455.       per item.
  8456.     * Don't allow the default syndie user to be set to something invalid if
  8457.       its in single user mode.
  8458.  
  8459. 2006-02-15  jrandom
  8460.     * Merged in the i2p_0_6_1_10_PRE branch to the trunk, so CVS HEAD is no
  8461.       longer backwards compatible (and should not be used until 0.6.1.1 is
  8462.       out)
  8463.  
  8464. 2006-02-14  jrandom
  8465.     * Syndie ui bugfixes (thanks all!)
  8466.  
  8467. 2006-02-13  jrandom
  8468.     * Use the current directory for some temporary I2PSnark files, rather than
  8469.       the OS default temp dir (thanks anon!)
  8470.     * Increase the base streaming lib window size (still shrinks to 1 on
  8471.       retransmission though, of course)
  8472.     * Fixed the I2PTunnel newlines to work with lighthttpd (thanks all!)
  8473.     * Implement fast retransmit in the streaming lib (fires at most once per
  8474.       packet), and increased the default ack delay to 2 seconds (from .5s)
  8475.     * Don't ask for garlic level message acks for end to end messages unless
  8476.       they're useful (e.g. to ack session tags)
  8477.  
  8478. 2006-02-12  cervantes
  8479.     * Use a different santisation method for some SML attributes
  8480.     * Make router console update config save button actually save.
  8481.     * Fix console bandwidth limiter burst rate dropdowns, so the display
  8482.       relates to what is saved in the config.
  8483.  
  8484. 2006-02-12  cervantes
  8485.     * SML is now stricter in it's formatting (attributes should only use
  8486.       double quotes instead of being allowed to mix with singles).
  8487.     * Using apostrophes in SML attributes will no longer invalidate the tag.
  8488.     * Some instances of [blog] tag description were not being displayed
  8489.       correctly.
  8490.  
  8491. 2006-02-12  jrandom
  8492.     * Further SSU peer test throttling
  8493.     * Put the most common router console features on the main index page too
  8494.  
  8495. 2006-02-11  jrandom
  8496.     * Be more careful about SSU peer test floods
  8497.  
  8498. 2006-02-09  jrandom
  8499.     * Adjusted one of the SSU timeouts so we don't drop peers as easily (duh)
  8500.  
  8501. 2006-02-08  jrandom
  8502.     * Added transparent support for VIA C3 CPUs to jbigi (thanks Nekow42), and
  8503.       bundled a precompiled libjbigi.so in the jbigi.jar
  8504.     * Cleaned up the synchronization for some SSU packet handling code
  8505.     * Allow explicit rejection of more lagged tunnel build requests, rather
  8506.       than dropping them outright
  8507.     * Use lighter load testing
  8508.  
  8509. 2006-02-07  jrandom
  8510.     * Handle HTTP headers without any values (thanks Sugadude!)
  8511.     * Don't show the option to make Syndie multiuser, since very few people
  8512.       need it, and multiuser mode is a lot more complex to use.  Geeks can
  8513.       enable it by adding "syndie.singleUser=false" to syndie/syndie.config
  8514.       (or in the router's advanced config, for the embedded Syndie)
  8515.     * When a peer rejects participation in a tunnel, they mean it (duh)
  8516.     * Decrease tunnel test timeout period to 20s (a 40s lag is insane)
  8517.     * Remove a throttle on the size of the SSU active outbound pool, since
  8518.       it was essentially arbitrary
  8519.     * Use a more appropriate SSU bloom filter size
  8520.     * Don't "proactively" drop SSU connections if we have partially received
  8521.       inbound messages (duh)
  8522.     * Migrate most of the message state across SSU connection reestablishment
  8523.  
  8524. 2006-02-06  jrandom
  8525.     * Reduce the SSU retransmit timeout range, and increase the number of ACKs
  8526.       piggybacked
  8527.  
  8528. 2006-02-05  jrandom
  8529.     * Experiment with short exponents for DH/ElGamal, using a 226bit x instead
  8530.       of a 2048bit x, as reports suggest that size is sufficient for 2048bit
  8531.       DH/ElGamal when using safe primes (see KeyGenerator.java for references)
  8532.     * Enable the messageHistory.txt by default, for debugging
  8533.  
  8534. 2006-02-05  jrandom
  8535.     * Substantial bugfix for the duplicate message detection in the transport
  8536.       layer
  8537.     * Handle tunnel build responses ASAP, rather than queueing them up to wait
  8538.       in line (processing them is really fast - just a few AES loops)
  8539.     * Don't bother handling build requests that we have queued up for a while
  8540.       locally, as the requestor will have timed it out anyway (perhaps we
  8541.       should reply regardless, but with a backoff instead?)
  8542.  
  8543. 2006-02-04  jrandom
  8544.     * Further tunnel test cleanup and disabling of the old tunnel creation
  8545.       code
  8546.  
  8547. 2006-02-04  jrandom
  8548.     * Clean up and reenable the tunnel testing for the new tunnel system.
  8549.  
  8550. 2006-02-04  jrandom
  8551.     * Don't cache the archive.txt in syndie when fetching it through the web
  8552.       interface.
  8553.     * Logging updates
  8554.  
  8555. 2006-02-03  jrandom
  8556.     * Added further replay prevention on the tunnel build requests
  8557.     * More aggressive streaming lib closing on reset
  8558.  
  8559. 2006-02-03  jrandom
  8560.     * More aggressive refusal of peers from the wrong network (oops)
  8561.  
  8562. 2006-02-01  jrandom
  8563.     * Instruct the router to reseed against a new URL, for migration purposes:
  8564.       http://dev.i2p.net/i2pdb2/
  8565.     * Aggressive error handling during UDP packet creation (thanks cervantes)
  8566.  
  8567. 2006-02-01  jrandom
  8568.     * Fix the new tunnel creation crypto, including the addition of a 4 byte
  8569.       "next message ID" to the encrypted request structure in the spec.
  8570.     * Backwards incompatible change, using the new tunnel creation crypto, the
  8571.       fixed MD5 HMAC size, and a new network ID (to prevent cross pollination
  8572.       with the old incompatible network).
  8573.     * Reworked the leaseSet request process to handle a race condition
  8574.     * Disable the TCP transport
  8575.     * Run four separate threads on the job queue to cut down on job lag
  8576.  
  8577. 2006-01-28  jrandom
  8578.     * Removed a race that could show up in leaseSet requesting with the new
  8579.       tunnel building process
  8580.  
  8581. 2006-01-25  jrandom
  8582.     * Run the peer profile coalescing/reorganization outside the job queue
  8583.       (on one of the timers), to cut down on some job queue congestion.  Also,
  8584.       trim old profiles while running, not just when starting up.
  8585.     * Slightly more sane intra-floodfill-node netDb activity (only flood new
  8586.       entries)
  8587.     * Workaround in the I2PTunnelHTTPServer for some bad requests (though the
  8588.       source of the bug is not yet addressed)
  8589.     * Better I2PSnark reconnection handling
  8590.     * Further cleanup in the new tunnel build process
  8591.     * Make sure we expire old participants properly
  8592.     * Remove much of the transient overload throttling (it wasn't using a good
  8593.       metric)
  8594.  
  8595. 2006-01-25  dust
  8596.     * Fix IRC client proxy to use ISO-8859-1.
  8597.  
  8598. 2006-01-22  jrandom
  8599.     * New tunnel build process - does not use the new crypto or new peer
  8600.       selection strategies.  However, it does drop the fallback tunnel
  8601.       procedure, except for tunnels who are configured to allow them, or for
  8602.       the exploratory pool during bootstrapping or after a catastrophic
  8603.       failure.  This new process prefers to fail rather than use too-short
  8604.       tunnels, so while it can do some pretty aggressive tunnel rebuilding,
  8605.       it may expose more tunnel failures to the user.
  8606.     * Always prefer normal tunnels to fallback tunnels.
  8607.     * Potential fix for a bug while changing i2cp settings on I2PSnark (thanks
  8608.       bar!)
  8609.     * Do all of the netDb entry writing in a separate thread, avoiding
  8610.       duplicates and batching them up.
  8611.  
  8612. 2006-01-19  Complication
  8613.     * Explain better where eepsite's destkey can be found
  8614.  
  8615. 2006-01-18  cervantes
  8616.     * Add title attributes to all external links in Syndie, so we can rollover
  8617.       and quickly see if it's worth clicking on.
  8618.     * Fixed a minor compiler warning.
  8619.  
  8620. 2006-01-17  jrandom
  8621.     * First pass of the new tunnel creation crypto, specified in the new
  8622.       router/doc/tunnel-alt-creation.html (referenced in the current
  8623.       router/doc/tunnel-alt.html).  It isn't actually used anywhere yet, other
  8624.       than in the test code, but the code verifies the technical viability, so
  8625.       further scrutiny would be warranted.
  8626.  
  8627. 2006-01-16  cervantes
  8628.     * Dragged I2P kicking and screaming into 2006 (Oops)
  8629.  
  8630. 2006-01-14  cervantes
  8631.     * Removed entirely misleading memory status from the console summary.
  8632.  
  8633. 2006-01-13  cervantes
  8634.     * Further Syndie layout hardening and typeface balancing.
  8635.  
  8636. * 2006-01-12  0.6.1.9 released
  8637.  
  8638. 2006-01-12  jrandom
  8639.     * Only create the loadtest.log if requested to do so (thanks zzz!)
  8640.     * Make sure we cleanly take into consideration the appropriate data
  8641.       points when filtering out duplicate messages in the message validator,
  8642.       and report the right bloom filter false positives rate (not used for
  8643.       anything except debugging)
  8644.  
  8645. 2006-01-12  cervantes
  8646.     * Syndie CSS tweaks to removed some redundant declarations, improve font
  8647.       scaling and layout robustness. Improved cross browser compatibility
  8648.       (in other words "kicked IE"). Tightened the look of the blog template
  8649.       a little.
  8650.  
  8651. 2006-01-11  Complication
  8652.     * CSS comment fixes
  8653.  
  8654. 2006-01-11  jrandom
  8655.     * Include the attachments/blogs/etc for comments on the blog view
  8656.     * Syndie HTML fixes (thanks cervantes!)
  8657.     * Make sure we fully reset the objects going into our cache before we
  8658.       reuse them (thanks zzz!)
  8659.  
  8660. 2006-01-10  jrandom
  8661.     * Added the per-post list of attachments/blogs/etc to the blog view in
  8662.       Syndie (though this does not yet include comments or some further
  8663.       refinements)
  8664.     * Have the I2P shortcut launch i2p.exe instead of i2psvc.exe on windows,
  8665.       removing the dox box (though also removes the restart functionality...)
  8666.     * Give the i2p.exe the correct java.library.path to support the systray
  8667.       dll (thanks Bobcat, Sugadude, anon!)
  8668.  
  8669. 2006-01-09  jrandom
  8670.     * Removed a longstanding bug that had caused unnecessary router identity
  8671.       churn due to clock skew
  8672.     * Temporarily sanity check within the streaming lib for long pending
  8673.       writes
  8674.     * Added support for a blog-wide logo to Syndie, and automated the pushing
  8675.       of updated extended blog info data along side the metadata.
  8676.  
  8677. 2006-01-09  jrandom
  8678.     * Bugfix for a rare SSU error (thanks cervantes!)
  8679.     * More progress on the blog interface, allowing customizable blog-wide
  8680.       links.
  8681.  
  8682. 2006-01-08  jrandom
  8683.     * First pass of the new blog interface, though without much of the useful
  8684.       customization features (coming soon)
  8685.  
  8686. 2006-01-04  jrandom
  8687.     * Rather than profile individual tunnels for throughput over their
  8688.       lifetime, do so at 1 minute intervals (allowing less frequently active
  8689.       tunnels to be more fairly measured).
  8690.     * Run the live tunnel load test across two tunnels at a time, by default.
  8691.       The load test runs for a random period from 90s to the tunnel lifetime,
  8692.       self paced.  This should help gathering data for profiling peers that
  8693.       are in exploratory tunnels.
  8694.  
  8695. 2006-01-03  jrandom
  8696.     * Calculate the overall peer throughput across the 3 fastest one minute
  8697.       tunnel throughput values, rather than the single fastest throughput.
  8698.     * Degrade the profiled throughput data over time (cutting the profiled
  8699.       peaks in half once a day, on average)
  8700.     * Enable yet another new speed calculation for profiling peers, using the
  8701.       peak throughput from individual tunnels that a peer is participating in,
  8702.       rather than across all tunnels they are participating in.  This helps
  8703.       gather a fairer peer throughput measurement, since it won't allow a slow
  8704.       high capacity peer seem to have a higher throughput (pushing a little
  8705.       data across many tunnels at once, as opposed to lots of data across a
  8706.       single tunnel).  This degrades over time like the other.
  8707.     * Add basic OS/2 support to the jbigi code (though we do not bundle a
  8708.       precompiled OS/2 library)
  8709.  
  8710. 2006-01-01  jrandom
  8711.     * Disable multifile torrent creation in I2PSnark's web UI for the moment
  8712.       (though it can still seed and participate in multifile swarms)
  8713.     * Enable a new speed calculation for profiling peers, using their peak
  8714.       1 minute average tunnel throughput as their speed.
  8715.  
  8716. 2005-12-31  jrandom
  8717.     * Include a simple torrent creator in the I2PSnark web UI
  8718.     * Further streaming lib closing improvements
  8719.     * Refactored the load test components to run off live tunnels (though,
  8720.       still not safe for normal/anonymous load testing)
  8721.  
  8722. 2005-12-30  jrandom
  8723.     * Close streams more gracefully
  8724.  
  8725. 2005-12-30  jrandom
  8726.     * Small streaming lib bugfixes for the modified timeouts
  8727.     * Minor Syndie/Sucker RSS html fix
  8728.     * Small synchronization fix in I2PSnark (thanks fsm!)
  8729.  
  8730. 2005-12-30  jrandom
  8731.     * Replaced the bundled linux jcpuid (written in C++) with scintilla's
  8732.       jcpuid (written in C), removing the libg++.so.5 dependency that has bit
  8733.       some distros (e.g. mandriva)
  8734.  
  8735. 2005-12-29  jrandom
  8736.     * Minor fix to the new ERR-ClockSkew to deal with people whose clocks are
  8737.       actually correct
  8738.  
  8739. 2005-12-27  jrandom
  8740.     * Add a new Status: line on the router console - "ERR-ClockSkew", in case
  8741.       the clock is too skewed to do anything useful (check the year and month,
  8742.       not just the hour and minute).
  8743.     * Fixed the read/write timeouts in the streaming lib (so that it actually
  8744.       honors them now)
  8745.     * Minor I2PSnark cleanups (no read timeout, more careful shutdown and
  8746.       torrent closing)
  8747.     * Handle an oddball tunnel creation failure (thanks Xunk)
  8748.  
  8749. 2005-12-26  Complication
  8750.     * Fix some integer typecasting in I2PSnark (caused >2GB torrents to fail)
  8751.     * HTML readability cosmetics on "Peers" page
  8752.  
  8753. * 2005-12-22  0.6.1.8 released
  8754.  
  8755. 2005-12-22  jrandom
  8756.     * Bundle the standalone I2PSnark launcher in the installer and update
  8757.       process (launch as "java -jar launch-i2psnark.jar", viewing the
  8758.       interface on http://localhost:8002/)
  8759.     * Don't autostart swarming torrents by default so that you can run a
  8760.       standalone I2PSnark from the I2P install dir and not have the embedded
  8761.       I2PSnark autolaunch the torrents that the standalone instance is running
  8762.     * Fixed a rare streaming lib bug that could let a blocking call wait
  8763.       forever.
  8764.  
  8765. 2005-12-22  jrandom
  8766.     * Cleaned up some buffer synchronization issues in I2PSnark that could
  8767.       cause blockage.
  8768.  
  8769. 2005-12-21  jrandom
  8770.     * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
  8771.       behavior)
  8772.     * Fixed the I2PSnark bug that would lose track of live peers
  8773.  
  8774. 2005-12-20  jrandom
  8775.     * Enabled the control in I2PSnark to toggle whether torrents should be
  8776.       started automatically or not
  8777.     * Hopefully finished the last hook to close down torrents completely when
  8778.       they're stopped.
  8779.  
  8780. 2005-12-19  jrandom
  8781.     * Fix for old Syndie blog bookmarks (thanks Complication!)
  8782.     * Fix for I2PSnark to accept incoming connections again (oops)
  8783.     * Randomize the order that peers from the tracker are contacted
  8784.  
  8785. 2005-12-19  jrandom
  8786.     * I2PSnark logging, disconnect old inactive peers rather than new ones,
  8787.       memory usage reduction, better OOM handling, and a shared connection
  8788.       acceptor.
  8789.     * Cleaned up the Syndie blog page and the resulting filters (viewing a
  8790.       blog from the blog page shows threads started by the selected author,
  8791.       not those that they merely participate in)
  8792.  
  8793. 2005-12-18  jrandom
  8794.     * Added a standalone runner for the I2PSnark web ui (build with the
  8795.       command "ant i2psnark", unzip i2psnark-standalone.zip somewhere, run
  8796.       with "java -jar launch-i2psnark.jar", and go to http://localhost:8002/).
  8797.     * Further I2PSnark error handling
  8798.  
  8799. 2005-12-17  jrandom
  8800.     * Let multiuser accounts authorize themselves to access the remote
  8801.       functionality again (thanks Ch0Hag!)
  8802.     * Adjust the JVM heap size to 128MB for new installs (existing users can
  8803.       accomplish this by editing wrapper.config, adding the line
  8804.       "wrapper.java.maxmemory=128", and then doing a full shutdown and startup
  8805.       of the router).  This is relevent for heavy usage of I2PSnark in the
  8806.       router console.
  8807.  
  8808. 2005-12-17  jrandom
  8809.     * Use our faster SHA1, rather than the JVM's within I2PSnark, and let
  8810.       'piece' sizes grow larger than before.
  8811.  
  8812. 2005-12-16  jrandom
  8813.     * Added some I2PSnark sanity checks, an OOMListener when running
  8814.       standalone, and a guard against keeping memory tied up indefinitely.
  8815.     * Sanity check on the watchdog (thanks zzz!)
  8816.     * Handle invalid HTTP requests in I2PTunnel a little better
  8817.  
  8818. 2005-12-16  jrandom
  8819.     * Moved I2PSnark from using Threads to I2PThreads, so we handle OOMs
  8820.       properly (thanks Complication!)
  8821.     * More guards in I2PSnark for zany behavior (I2PSession recon w/ skew,
  8822.       b0rking in the DirMonitor, etc)
  8823.  
  8824. 2005-12-16  jrandom
  8825.     * Try to run a torrent in readonly mode if we can't write to the file, and
  8826.       handle failures a little more gracefully (thanks polecat!)
  8827.  
  8828. 2005-12-16  jrandom
  8829.     * Refuse torrents with too many files (128), avoiding ulimit errors.
  8830.     * Remove an fd leak in I2PSnark
  8831.     * Further I2PSnark web UI cleanup
  8832.  
  8833. 2005-12-15  jrandom
  8834.     * Added a first pass to the I2PSnark web UI (see /i2psnark/)
  8835.  
  8836. 2005-12-15  jrandom
  8837.     * Added multitorrent support to I2PSnark, accessible currently by running
  8838.       "i2psnark.jar --config i2psnark.config" (which may or may not exist).
  8839.       It then joins the swarm for any torrents in ./i2psnark/*.torrent, saving
  8840.       their data in that directory as well.  Removing the .torrent file stops
  8841.       participation, and it is currently set to seed indefinitely.  Completion
  8842.       is logged to the logger and standard output, with further UI interaction
  8843.       left to the (work in progress) web UI.
  8844.  
  8845. 2005-12-14  jrandom
  8846.     * Fix to drop peer references when we shitlist people again (thanks zzz!)
  8847.     * Further I2PSnark fixes to deal with arbitrary torrent info attributes
  8848.       (thanks Complication!)
  8849.  
  8850. 2005-12-13  zzz
  8851.     * Don't test tunnels expiring within 90 seconds
  8852.     * Defer Test Tunnel jobs if job lag too large
  8853.     * Use JobQueue.getMaxLag() rather than the jobQueue.jobLag stat to measure
  8854.       job lag for tunnel build backoff, allowing for more agile handling
  8855.       (since the stat is only updated once a minute)
  8856.     * Use tunnel length override if all tunnels are expiring within one
  8857.       minute.
  8858.  
  8859. 2005-12-13  jrandom
  8860.     * Fixed I2PSnark's handling of some torrent files to deal with those
  8861.       created by Azureus and I2PRufus (it didn't know how to deal with
  8862.       additional meta info, such as path.utf-8 or name.utf-8).
  8863.  
  8864. 2005-12-09  zzz
  8865.     * Create different strategies for exploratory tunnels (which are difficult
  8866.       to create) and client tunnels (which are much easier)
  8867.     * Gradually increase number of parallel build attempts as tunnel expiry
  8868.       nears.
  8869.     * Temporarily shorten attempted build tunnel length if builds using
  8870.       configured tunnel length are unsuccessful
  8871.     * React more aggressively to tunnel failure than routine tunnel
  8872.       replacement
  8873.     * Make tunnel creation times randomized - there is existing code to
  8874.       randomize the tunnels but it isn't effective due to the tunnel creation
  8875.       strategy. Currently, most tunnels get built all at once, at about 2 1/2
  8876.       to 3 minutes before expiration. The patch fixes this by fixing the
  8877.       randomization, and by changing the overlap time (with old tunnels) to a
  8878.       range of 2 to 4 minutes.
  8879.     * Reduce number of excess tunnels. Lots of excess tunnels get created due
  8880.       to overlapping calls. Just about anything generated a call which could
  8881.       build many tunnels all at once, even if tunnel building was already in
  8882.       process.
  8883.     * Miscellaneous router console enhancements
  8884.  
  8885. 2005-12-08  jrandom
  8886.     * Minor bugfix in SSU for dealing with corrupt packets
  8887.     * Added some hooks for load testing
  8888.  
  8889. 2005-12-07  jrandom
  8890.     * Added a first pass at a blog view in Syndie
  8891.  
  8892. 2005-12-07  jrandom
  8893.     * Expand the thread we're viewing to its leaf
  8894.     * Bugfix on intraday ordering (children are always newer than parents)
  8895.  
  8896. 2005-12-05  jrandom
  8897.     * Added an RDF and XML thread export to Syndie, reachable at
  8898.       .../threadnav/rdf or .../threadnav/xml, accepting the parameters
  8899.       count=$numThreads and offset=$threadIndex.  If the $numThreads is -1, it
  8900.       displays all threads.
  8901.  
  8902. 2005-12-04  TLorD
  8903.     * Patch for the C SAM library to null terminate strings on copy (thanks!)
  8904.  
  8905. 2005-12-04  jrandom
  8906.     * Bugfix in Syndie for a problem in the threaded indexer (thanks CofE!)
  8907.     * Always include ourselves in the favorite authors (since we don't
  8908.       bookmark ourselves)
  8909.  
  8910. 2005-12-03  jrandom
  8911.     * Use newgroup-like tags by default in Syndie's interface
  8912.  
  8913. 2005-12-03  jrandom
  8914.     * Added support for a 'most recent posts' view that CofE requested, which
  8915.       includes the ability to filter by age (e.g. posts by your favorite
  8916.       authors in the last 5 days).
  8917.  
  8918. 2005-12-03  jrandom
  8919.     * Adjusted Syndie to use the threaded view that cervantes suggested, which
  8920.       displays a a single thread path at a time - from root to leaf - rather
  8921.       than a depth first traversal.
  8922.  
  8923. 2005-12-03  jrandom
  8924.     * Package up a standalone Syndie install into a "syndie-standalone.zip",
  8925.       buildable with "ant syndie".  It extracts into ./syndie/, launches with
  8926.       "java -jar launchsyndie.jar" (or javaw, on windows, to avoid a dos box),
  8927.       running a single user Syndie instance (by default).  It also creates a
  8928.       default subscription to syndiemedia without any anonymity (using no
  8929.       proxy).  Upgrades can be done by just replacing the syndie.war with the
  8930.       one from I2P.
  8931.  
  8932. * 2005-12-01  0.6.1.7 released
  8933.  
  8934. 2005-12-01  jrandom
  8935.     * Add a new criteria to the tunnel join throttle, backing off people if we
  8936.       are failing to talk to our peers more than usual.
  8937.  
  8938. 2005-11-30  jrandom
  8939.     * Cleaned up the build process to deal with Jetty 5.1.6 and rename the
  8940.       new commons-logging-api.jar to commons-logging.jar, which it replaces.
  8941.       Jetty 5.1.6 is pushed with all updates.  Also, no need to push a
  8942.       separate jdom or rome, as they're inside syndie.war.
  8943.  
  8944. 2005-11-30  jrandom
  8945.     * Don't let the TCP transport alone shitlist a peer, since other
  8946.       transports may be working.  Also display whether TCP connections are
  8947.       inbound or outbound on the peers page.
  8948.     * Fixed some substantial bugs in the SSU introducers where we wouldn't
  8949.       talk to anyone who didn't expose an IP (even if they had introducers),
  8950.       among other goofy things.
  8951.     * When dealing with SSU introducers, send them all a packet at 3s/6s/9s,
  8952.       rather than sending one a packet at 3s, then another a packet at 6s,
  8953.       and a third a packet at 9s.
  8954.     * Fixed Syndie attachments (oops)
  8955.  
  8956. 2005-11-29  zzz
  8957.     * Added a link to orion's jump page on the 'key not found' error page.
  8958.  
  8959. 2005-11-29  jrandom
  8960.     * Further Syndie UI cleanup
  8961.     * Bundled our patched MultiPartRequest code from jetty (APL2 licensed),
  8962.       since it hasn't been applied to the jetty CVS yet [1].  Its packaged
  8963.       into syndie.jar and renamed to net.i2p.syndie.web.MultiPartRequest, but
  8964.       will be removed as soon as its integrated into Jetty.  This patch allows
  8965.       posting content in various character sets.
  8966.       [1] http://article.gmane.org/gmane.comp.java.jetty.general/6031
  8967.     * Upgraded new installs to the latest stable jetty (5.1.6), though this
  8968.       isn't pushed as part of the update yet, as there aren't any critical
  8969.       bugs.
  8970.  
  8971. 2005-11-29  jrandom
  8972.     * Added back in the OSX jbigi, which was accidentally removed a few revs
  8973.       back (thanks for the bug report stoerte!)  New installs will get the
  8974.       full jbigi, or you can pull the jbigi.jar from CVS by going to
  8975.       http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/installer/lib/jbigi/jbigi.jar
  8976.       and clicking on the first "download" link, saving that jbigi.jar to
  8977.       lib/jbigi.jar in your I2P installation directory.  After restarting your
  8978.       router, it should load up fine.
  8979.  
  8980. 2005-11-27  jrandom
  8981.     * Inlined the Syndie CSS to reduce the number of HTTP requests (and
  8982.       because firefox [and others?] delay rendering until they fetch the css).
  8983.     * Make sure we fire the shutdown tasks when regenerating a new identity
  8984.       (thanks picsou!)
  8985.     * Cleaned up some of the things I b0rked in the 'dynamic keys' mode
  8986.     * Don't drop SSU sessions if they're still transmitting data successfully,
  8987.       even if there are transmission failures
  8988.     * Adjusted the time summarization to display hours after 119m, not 90m
  8989.     * Further EepGet cleanup (grr)
  8990.  
  8991. * 2005-11-26 0.6.1.6 released
  8992.  
  8993. 2005-11-26  jrandom
  8994.     * Update the sorting in Syndie to consider children 'newer' than parents,
  8995.       even if they have the same message ID (duh)
  8996.     * Cleaned up some nav links in Syndie (good idea gloin, spaetz!)
  8997.     * Added a bunch of tooltips to Syndie's fields (thanks polecat!)
  8998.     * Force support for nonvalidating XML in Jetty (so we can handle GCJ/etc
  8999.       better)
  9000.  
  9001. 2005-11-26  jrandom
  9002.     * Be more explicit about what messages we will handle through a client
  9003.       tunnel, and how we will handle them.  This cuts off a set of attacks
  9004.       that an active adversary could mount, though they're probably nonobvious
  9005.       and would require at least some sophistication.
  9006.  
  9007. 2005-11-26  Raccoon23
  9008.     * Added support for 'dynamic keys' mode, where the router creates a new
  9009.       router identity whenever it detects a substantial change in its public
  9010.       address (read: SSU IP or port).  This only offers minimal additional
  9011.       protection against trivial attackers, but should provide functional
  9012.       improvement for people who have periodic IP changes, since their new
  9013.       router address would not be shitlisted while their old one would be.
  9014.     * Added further infrastructure for restricted route operation, but its use
  9015.       is not recommended.
  9016.  
  9017. 2005-11-25  jrandom
  9018.     * Further Syndie UI cleanups
  9019.     * Logging cleanup
  9020.     * Fixed link to fproxy.tino.i2p (thanks zzz!)
  9021.  
  9022. 2005-11-25  jrandom
  9023.     * Don't publish stats for periods we haven't reached yet (thanks zzz!)
  9024.     * Cleaned up the syndie threaded display to show the last updated date for
  9025.       a subthread, and to highlight threads updated in the last two days.
  9026.  
  9027. 2005-11-24  jrandom
  9028.     * Fix to save syndication settings in Syndie (thanks spaetz!)
  9029.  
  9030. 2005-11-23  jrandom
  9031.     * Removed spurious streaming lib RTO increase (it wasn't helpful)
  9032.     * Streamlined the tunnel batching to schedule batch transmissions more
  9033.       appropriately.
  9034.     * Default tunnel pool variance to 2 +0-1 hops
  9035.  
  9036. 2005-11-21  jrandom
  9037.     * IE doesn't strip SPAN from <button> form fields, so add in a workaround
  9038.       within I2PTunnel.
  9039.     * Increase the maximum SSU retransmission timeout to accomodate slower or
  9040.       more congested links (though SSU's RTO calculation will usually use a
  9041.       much lower timeout)
  9042.     * Moved the streaming lib timed events off the main timer queues and onto
  9043.       a streaming lib specific set of timer queues.  Streaming lib timed
  9044.       events are more likely to have lock contention on the I2CP socket while
  9045.       other timed events in the router are (largely) independent.
  9046.     * Fixed a case sensitive lookup bug (thanks tino!)
  9047.     * Syndie cleanup - new edit form on the preview page, and fixed some blog
  9048.       links (thanks tino!)
  9049.  
  9050. 2005-11-19  jrandom
  9051.     * Implemented a trivial pure java PMTU backoff strategy, switching between
  9052.       a 608 byte MTU and a 1350 byte MTU, depending upon retransmission rates.
  9053.     * Fixed new user registration in Syndie (thanks Complication!)
  9054.  
  9055. 2005-11-17  jrandom
  9056.     * More cautious file handling in Syndie
  9057.  
  9058. 2005-11-16  jrandom
  9059.     * More aggressive I2PTunnel content encoding munging to work around some
  9060.       rare HTTP behavior (ignoring q values on Accept-encoding, using gzip
  9061.       even when only identity is specified, etc).  I2PTunnelHTTPServer now
  9062.       sends "Accept-encoding: \r\n" plus "X-Accept-encoding: x-i2p-gzip\r\n",
  9063.       and I2PTunnelHTTPServer handles x-i2p-gzip in either the Accept-encoding
  9064.       or X-Accept-encoding headers.  Eepsite operators who do not know to
  9065.       check for X-Accept-encoding will simply use the identity encoding.
  9066.  
  9067. * 2005-11-15  0.6.1.5 released
  9068.  
  9069. 2005-11-14  jrandom
  9070.     * Migrate to the new Syndie interface
  9071.  
  9072. 2005-11-11  jrandom
  9073.     * Add filtering threads by author to Syndie, populated with authors in the
  9074.       user's addressbook
  9075.     * When creating the default user, add
  9076.       "http://syndiemedia.i2p/archive/archive.txt" to their addressbook,
  9077.       configured to automatically pull updates.  (what other archives should
  9078.       be included?)
  9079.     * Tiny servlet to help dole out the new routerconsole themes, and bundle
  9080.       the installer/resources/themes/** into ./docs/themes/** on both install
  9081.       and update.
  9082.  
  9083. 2005-11-11  cervantes
  9084.     * Initial pass of the routerconsole revamp, starting with I2PTunnel and
  9085.       being progressively rolled out to other sections at later dates.
  9086.       Featuring abstracted W3C strict XHTML1.0 markup, with CSS providing
  9087.       layout and styling.
  9088.     * Implemented console themes. Users can create their own themes by
  9089.       creating css files in: {i2pdir}/docs/themes/console/{themename}/
  9090.       and activating it using the routerconsole.theme={themename} advanced
  9091.       config property. Look at the example incomplete "defCon1" theme.
  9092.       Note: This is very much a work in progress. Folks might want to hold-off
  9093.       creating their own skins until the markup has solidified.
  9094.     * Added "routerconsole.javascript.disabled=true" to disable console
  9095.       client-side scripting and "routerconsole.css.disabled=true" to remove
  9096.       css styling (only rolled out in the i2ptunnel interface currently)
  9097.     * Fixed long standing bug with i2ptunnel client and server edit screens
  9098.       where tunnel count and depth properties would fail to save. Added
  9099.       backup quantity and variance configuration options.
  9100.     * Added basic accessibility support (key shortcuts, linear markup, alt and
  9101.       title information and form labels).
  9102.     * So far only tested on IE6, Firefox 1.0.6, Opera 8 and lynx.
  9103.  
  9104. 2005-11-11  jrandom
  9105.     * Default Syndie to single user mode, and automatically log into a default
  9106.       user account (additional accounts can be logged into with the 'switch'
  9107.       or login pages, and new accounts can be created with the register page).
  9108.     * Disable the 'automated' column on the Syndie addressbook unless the user
  9109.       is appropriately authorized (good idea Polecat!)
  9110.  
  9111. 2005-11-10  jrandom
  9112.     * First pass to a new threaded Syndie interface, which isn't enabled by
  9113.       default, as its not done yet.
  9114.  
  9115. 2005-11-06  jrandom
  9116.     * Include SSU establishment failure in the peer profile as a commError,
  9117.       as we do for TCP establishment failures.
  9118.     * Don't throttle the initial transmission of a message because of ongoing
  9119.       retransmissions to a peer, since the initial transmission of a message
  9120.       is more valuable than a retransmission (since it has less latency).
  9121.     * Cleaned up links to SusiDNS and I2PTunnel (thanks zzz!)
  9122.  
  9123. 2005-11-05  jrandom
  9124.     * Include the most recent ACKs with packets, rather than only sending an
  9125.       ack exactly once.  SSU differs from TCP in this regard, as TCP has ever
  9126.       increasing sequence numbers, while each message ID in SSU is random, so
  9127.       we don't get the benefit of later ACKs implicitly ACKing earlier
  9128.       messages.
  9129.     * Reduced the max retransmission timeout for SSU
  9130.     * Don't try to send messages queued up for a long time waiting for
  9131.       establishment.
  9132.  
  9133. 2005-11-05  dust
  9134.     * Fix sucker to delete its temporary files.
  9135.     * Improve sucker's sml output some.
  9136.     * Fix Exception in SMLParser for weird sml.
  9137.  
  9138. 2005-11-03  zzz
  9139.     * Added a new error page to the eepproxy to differentiate the full 60
  9140.       second timeout from the immediate "I don't know this base64" failure.
  9141.  
  9142. 2005-11-01  jrandom
  9143.     * Added a few more css elements (thanks identiguy!)
  9144.  
  9145. 2005-10-31  jrandom
  9146.     * Fix for some syndie reply scenarios (thanks identiguy and CofE!)
  9147.     * Removed a potentially infinitely recursive call (oops)
  9148.  
  9149. 2005-10-30  dust
  9150.     * Merge sucker into syndie with a rssimport.jsp page.
  9151.     * Add getContentType() to EepGet.
  9152.     * Make chunked transfer work (better) with EepGet.
  9153.     * Do replaceAll("<","<") for logs.
  9154.  
  9155. * 2005-10-29  0.6.1.4 released
  9156.  
  9157. 2005-10-29  jrandom
  9158.     * Improved the bandwidth throtting on tunnel participation, especially for
  9159.       low bandwidth peers.
  9160.     * Improved failure handling in SSU with proactive reestablishment of
  9161.       failing idle peers, and rather than shitlisting a peer who failed too
  9162.       much, drop the SSU session and allow a new attempt (which, if it fails,
  9163.       will cause a shitlisting)
  9164.     * Clarify the cause of the shitlist on the profiles page, and include
  9165.       bandwidth limiter info at the bottom of the peers page.
  9166.  
  9167. 2005-10-26  jrandom
  9168.     * In Syndie, propogate the subject and tags in a reply, and show the parent
  9169.       post on the edit page for easy quoting.  (thanks identiguy and CofE!)
  9170.     * Streamline some netDb query handling to run outside the jobqueue -
  9171.       which means they'll run on the particular SSU thread that handles the
  9172.       message.  This should help out heavily loaded netDb peers.
  9173.  
  9174. 2005-10-25  jrandom
  9175.     * Defer netDb searches for newly referenced peers until we actually want
  9176.       them
  9177.     * Ignore netDb references to peers on our shitlist
  9178.     * Set the timeout for end to end client messages to the max delay after
  9179.       finding the leaseSet, so we don't have as many expired messages floating
  9180.       around.
  9181.     * Add a floor to the streaming lib window size
  9182.     * When we need to send a streaming lib ACK, try to retransmit one of the
  9183.       unacked packets instead (with updated ACK/NACK fields, of course).  The
  9184.       bandwidth cost of an unnecessary retransmission should be minor as
  9185.       compared to both an ACK packet (rounded up to 1KB in the tunnels) and
  9186.       the probability of a necessary retransmission.
  9187.     * Adjust the streaming lib cwin algorithm to allow growth after a full
  9188.       cwin messages if the rtt is trending downwards.  If it is not, use the
  9189.       existing algorithm.
  9190.     * Increased the maximum rto size in the streaming lib.
  9191.     * Load balancing bugfix on end to end messages to distribute across
  9192.       tunnels more evenly.
  9193.  
  9194. 2005-10-22  jrandom
  9195.     * Integrated GNU-Crypto's Fortuna PRNG, seeding it off /dev/urandom and
  9196.       ./prngseed.rnd (if they exist), and reseeding it with data out of
  9197.       various crypto operations (unused bits in a DH exchange, intermediary
  9198.       bits in a DSA signature generation, extra bits in an ElGamal decrypt).
  9199.       The Fortuna implementation under gnu.crypto.prng has been modified to
  9200.       use BouncyCastle's SHA256 and Cryptix's AES (since those are the ones
  9201.       I2P uses), and the resulting gnu.crypto.prng.* are therefor available
  9202.       under GPL+Classpath's linking exception (~= LGPL).  I2P's SecureRandom
  9203.       wrapper around it is, of course, public domain.
  9204.  
  9205. 2005-10-20  dust
  9206.     * Fix bug in ircclient that prevented it to use its own dest (i.e. was
  9207.       always shared. (thx for info Ragnarok)
  9208.     * Fix crash in Sucker with some bad html.
  9209.  
  9210. 2005-10-20  jrandom
  9211.     * Workaround a bug in GCJ's Calendar implementation
  9212.     * Propery throw an exception in the streaming lib if we try to write to a
  9213.       closed stream.  This will hopefully help clear some I2Phex bugs (thanks
  9214.       GregorK!)
  9215.  
  9216. 2005-10-19  jrandom
  9217.     * Ported the snark bittorrent client to I2P such that it is compatible
  9218.       with i2p-bt and azneti2p.  For usage information, grab an update and run
  9219.       "java -jar lib/i2psnark.jar".  It isn't currently multitorrent capable,
  9220.       but adding in support would be fairly easy (see PeerAcceptor.java:49)
  9221.     * Don't allow leaseSets expiring too far in the future (thanks postman)
  9222.  
  9223. 2005-10-19  jrandom
  9224.     * Bugfix for the auto-update code to handle different usage patterns
  9225.     * Decreased the addressbook recheck frequency to once every 12 hours
  9226.       instead of hourly.
  9227.     * Handle dynamically changing the HMAC size (again, unless your nym is
  9228.       toad or jrandom, ignore this ;)
  9229.     * Cleaned up some synchronization/locking code
  9230.  
  9231. 2005-10-17  dust
  9232.     * Exchange the remaining URL with EepGet in Sucker.
  9233.     * Allow /TOPIC irc command.
  9234.  
  9235. 2005-10-17  jrandom
  9236.     * Allow an env prop to configure whether we want to use the backwards
  9237.       compatible (but not standards compliant) HMAC-MD5, or whether we want
  9238.       to use the not-backwards compatible (but standards compliant) one.  No
  9239.       one should touch this setting, unless your name is toad or jrandom ;)
  9240.     * Added some new dummy facades
  9241.     * Be more aggressive on loading up the router.config before building the
  9242.       router context
  9243.     * Added new hooks for apps to deal with previously undefined I2NP message
  9244.       types without having to modify any code.
  9245.     * Demo code for using a castrated router for SSU comm (SSUDemo.java)
  9246.  
  9247. 2005-10-14  jrandom
  9248.     * More explicit filter for linux/PPC building (thanks anon!)
  9249.     * Fixed Syndie's Sucker to not explicitly reference something only found
  9250.       in sun's JVM (thanks cervantes!)
  9251.     * Don't filter IRC "MAP" messages (not critical, but it doesn't hurt)
  9252.  
  9253. * 2005-10-14  0.6.1.3 released
  9254.  
  9255. 2005-10-14  jrandom
  9256.     * Added a key explaining peers.jsp a bit (thanks tethra!)
  9257.  
  9258. 2005-10-13  dust
  9259.     * Bundled dust's Sucker for pulling RSS/Atom content into SML, which can
  9260.       then be injected into Syndie with the Syndie CLI.
  9261.     * Bundled ROME and JDOM (BSD and Apache licensed, respectively) for
  9262.       RSS/Atom parsing.
  9263.  
  9264. 2005-10-13  jrandom
  9265.     * SSU retransmission choke bugfix (== != !=)
  9266.     * Include initial transmissions in the retransmission choke, so that
  9267.       if we are already retransmitting a message, we won't send anything
  9268.       to that peer other than that message (or ACKs, if necessary)
  9269.  
  9270. 2005-10-12  jrandom
  9271.     * Choke SSU retransmissions to a peer while there is already a
  9272.       retransmission in flight to them.  This currently lets other initial
  9273.       transmissions through, since packet loss is often sporadic, but maybe
  9274.       this should block initial transmissions as well?
  9275.     * Display the retransmission bytes stat on peers.jsp (thanks bar!)
  9276.     * Filter QUIT messages in the I2PTunnelIRCClient proxy
  9277.  
  9278. 2005-10-11  jrandom
  9279.     * Piggyback the SSU partial ACKs with data packets.  This is backwards
  9280.       compatible.
  9281.     * Syndie RSS renderer bugfix, plus now include the full entry instead of
  9282.       just the blurb before the cut.
  9283.  
  9284. 2005-10-11  jrandom
  9285.     * Piggyback the SSU explicit ACKs with data packets (partial ACKs aren't
  9286.       yet piggybacked).  This is backwards compatible.
  9287.     * SML parser cleanup in Syndie
  9288.  
  9289. 2005-10-10  dust
  9290.     * Implemented a new I2PTunnelIRCClient which locally filters inbound and
  9291.       outbound IRC commands for anonymity and security purposes, removing all
  9292.       CTCP messages except ACTION, as well as stripping the hostname from the
  9293.       USER message (while leaving the nick and 'full name').  The IRC proxy
  9294.       doesn't use this by default, but you can enable it by creating a new
  9295.       "IRC proxy" tunnel on the web interface, or by changing the tunnel type
  9296.       to "ircclient" in i2ptunnel.config.
  9297.  
  9298. 2005-10-10  jrandom
  9299.     * I2PTunnel http client config cleanup and stats
  9300.     * Minor SSU congestion tweaks and stats
  9301.     * Reduced netDb exploration period
  9302.  
  9303. 2005-10-09  jrandom
  9304.     * Syndie CLI cleanup for simpler CLI posting.  Usage shown with
  9305.       java -jar lib/syndie.jar
  9306.     * Beginnings of the Syndie logging cleanup
  9307.     * Delete corrupt Syndie posts
  9308.  
  9309. 2005-10-09  jrandom
  9310.     * Now that the streaming lib works reasonably, set the default inactivity
  9311.       event to send a 0 byte keepalive payload, rather than disconnecting the
  9312.       stream.  This should cut the irc netsplits and help out with other long
  9313.       lived streams.  The default timeout is now less than the old timeout as
  9314.       well, so the keepalive will be sent before earlier builds fire their
  9315.       fatal timeouts.
  9316.  
  9317. 2005-10-08  jrandom
  9318.     * Use the OS clock for stat timing, since it doesn't jump around (though
  9319.       still use the NTP'ed clock for display)
  9320.     * Added new DH stats
  9321.  
  9322. * 2005-10-07  0.6.1.2 released
  9323.  
  9324. 2005-10-07  jrandom
  9325.     * Include the 1 second bandwidth usage on the console rather than the
  9326.       1 minute rate, as the 1 second value doesn't have the 1m/5m quantization
  9327.       issues.
  9328.  
  9329. 2005-10-07  jrandom
  9330.     * Allow the I2PTunnelHTTPServer to send back the first few packets of an
  9331.       HTTP response quicker, and initialize the streaming lib's cwin more
  9332.       carefully.
  9333.     * Added a small web UI to the new Syndie scheduled updater.  If you log in
  9334.       as a user authorized to use the remote archive funtionality, you can
  9335.       request remote archives in your address book to be automatically pulled
  9336.       down by checking the "scheduled?" checkbox.
  9337.  
  9338. 2005-10-05  jrandom
  9339.     * Allow the first few packets in the stream to fill in their IDs during
  9340.       handshake (thanks cervantes, Complication, et al!)  This should fix at
  9341.       least some of the intermittent HTTP POST issues.
  9342.  
  9343. 2005-10-04  jrandom
  9344.     * Syndie patch for single user remote archives (thanks nickless_head!)
  9345.     * Handle an invalid netDb store (thanks Complication!)
  9346.  
  9347. 2005-10-04  jrandom
  9348.     * Further reduction in unnecessary streaming packets.
  9349.  
  9350. 2005-10-03  jrandom
  9351.     * Properly reject unroutable IP addresses *cough*
  9352.  
  9353. 2005-10-03  rangarok
  9354.     * Changed default update delay to twelve hours, and enforced a minimum
  9355.       delay of one hour.
  9356.  
  9357. 2005-10-03  ragnarok
  9358.     * Implemented a Syndie auto-updater.  It will automatically pull new posts
  9359.       from selected syndie archives.  To try it out, add
  9360.       syndie.updateArchives=<comma seperated list of syndie archives> to your
  9361.       syndie.config.  Archives must be specified as the full url to archive.txt
  9362.       (e.g. http://syndiemedia.i2p/archive/archive.txt).  By default, it checks
  9363.       for new posts every hour.  This can be modified by setting
  9364.       syndie.updateDelay=<delay in hours> also in syndie.config.
  9365.  
  9366. * 2005-10-01  0.6.1.1 released
  9367.  
  9368. 2005-09-30  ragnarok
  9369.     * Implemented conditional get for syndie remote archive imports.
  9370.  
  9371. 2005-09-30  jrandom
  9372.     * Killed three more streaming lib bugs, one of which caused excess packets
  9373.       to be transmitted (dupacking dupacks), one that was the root of many of
  9374.       the old hung streams (shrinking highest received), and another that was
  9375.       releasing data too soon.
  9376.  
  9377. 2005-09-30  jrandom
  9378.     * Only allow autodetection of our IP address if we haven't received an
  9379.       inbound connection in the last two minutes.
  9380.     * Increase the default max streaming resends to 8 from 5 (and down from
  9381.       the earlier 10)
  9382.  
  9383. 2005-09-29  ragnarok
  9384.     * Export petnames from syndie to the router's petname db instead of
  9385.       userhosts.txt.
  9386.  
  9387. 2005-09-29  jrandom
  9388.     * Support noreseed.i2p in addition to .i2pnoreseed for disabling automatic
  9389.       reseeding - useful on OSes that make it hard to create dot files.
  9390.       Thanks Complication (and anon)!
  9391.     * Fixed the installer version string (thanks Frontier!)
  9392.     * Added cleaner rejection of invalid IP addresses, shitlist those who send
  9393.       us invalid IP addresses, verify again that we are not sending invalid IP
  9394.       addresses, and log an error if it happens. (Thanks Complication, ptm,
  9395.       and adab!)
  9396.  
  9397. * 2005-09-29  0.6.1 released
  9398.  
  9399. 2005-09-29  jrandom
  9400.     * Let syndie users modify their metadata.
  9401.     * Reseed the router on startup if there aren't enough peer references
  9402.       known locally.  This can be disabled by creating the file .i2pnoreseed
  9403.       in your home directory, and the existing detection and reseed handling
  9404.       on the web interface is unchanged.
  9405.  
  9406. 2005-09-28  jrandom
  9407.     * Fix for at least some (all?) of the wrong stream errors in the streaming
  9408.       lib
  9409.  
  9410. 2005-09-27  jrandom
  9411.     * Properly suggest filenames for attachments in Syndie (thanks all!)
  9412.     * Fixed the Syndie authorization scheme for single user vs. multiuser
  9413.  
  9414. 2005-09-27  jrandom
  9415.     * I2PTunnel bugfix (thanks Complication!)
  9416.     * Increase the SSU cwin slower during congestion avoidance (at k/cwin^2
  9417.       instead of k/cwin)
  9418.     * Limit the number of inbound SSU sessions being built at once (using
  9419.       half of the i2np.udp.maxConcurrentEstablish config prop)
  9420.     * Don't shitlist on a message send failure alone (unless there aren't any
  9421.       common transports).
  9422.     * More careful bandwidth bursting
  9423.  
  9424. 2005-09-26  jrandom
  9425.     * Reworded the SSU introductions config section (thanks duck!)
  9426.     * Force identity content encoding for I2PTunnel httpserver requests
  9427.       (thanks redzara!)
  9428.     * Further x-i2p-gzip bugfixes for the end of streams
  9429.     * Reduce the minimum bandwidth limits to 3KBps steady and burst (though
  9430.       I2P's performance at 3KBps is another issue)
  9431.     * Cleaned up some streaming lib structures
  9432.  
  9433. 2005-09-25  jrandom
  9434.     * Allow reseeding on the console if the netDb knows less than 30 peers,
  9435.       rather than less than 10 (without internet connectivity, we keep the
  9436.       last 15 router references)
  9437.     * Reenable the x-i2p-gzip HTTP processing by default, flushing the stream
  9438.       more aggressively.
  9439.     * Show the status that used to be called "ERR-Reject" as "OK (NAT)"
  9440.     * Reduced the default maximum number of streaming lib resends of a packet
  9441.       (10 retransmits is a bit much with a reasonable RTO)
  9442.  
  9443. 2005-09-25  Complication
  9444.     * Better i2paddresshelper handling in the I2PTunnel httpclient, plus a new
  9445.       conflict resolution page if the i2paddresshelper parameter differs from
  9446.       an existing name to destination mapping.
  9447.  
  9448. 2005-09-25  jrandom
  9449.     * Fix a long standing streaming lib bug (in the inactivity detection code)
  9450.     * Improved handling of initial streaming lib packet retransmissions to
  9451.       kill the "lost first packet" bug (where a page shows up with the first
  9452.       few KB missing)
  9453.     * Add support for initial window sizes greater than 1 - useful for
  9454.       eepsites to transmit e.g. 4 packets full of data along with the initial
  9455.       ACK, thereby cutting down on the rtt latency.  The congestion window
  9456.       size can and does still shrink down to 1 packet though.
  9457.     * Adjusted the streaming lib retransmission calculation algorithm to be
  9458.       more TCP-like.
  9459.  
  9460. 2005-09-21  redzara
  9461.     * Use ISO-8859-1 for the susidns xml
  9462.  
  9463. 2005-09-21  susi
  9464.     * Bugfix in susidns for deleting entries
  9465.  
  9466. 2005-09-21  jrandom
  9467.     * Add support for HTTP POST to EepGet
  9468.     * Use HTTP POST for syndie bulk fetches, since there's a lot of data to
  9469.       put in that URL.
  9470.  
  9471. 2005-09-18  jrandom
  9472.     * Added support for pure 64bit linux with jbigi and the java service
  9473.       wrapper (no need for jcpuid if we're on os.arch=amd64).  Thanks mule
  9474.       et al for help testing!
  9475.     * UI cleanup in Syndie (thanks gloin and bar!)
  9476.  
  9477. 2005-09-18  Ragnarok
  9478.     * Made MetaNamingService the default naming service.
  9479.  
  9480. 2005-09-17  Ragnarok
  9481.     * Implemented a naming service using Syndie's petname db.  It's not enabled
  9482.       by default, but you can try it out by setting
  9483.       i2p.naming.impl=net.i2p.client.naming.PetNameNamingService in
  9484.       router.config.
  9485.     * Implemented a meta naming service that will first lookup names in the
  9486.       PetNameNamingService then fallback on the HostTxtNamingService.  Which
  9487.       naming services are checked and in which order is specified by
  9488.       i2p.nameservicelist.  This will probably become the default naming service
  9489.       so please help test it out by setting
  9490.       i2p.naming.impl=net.i2p.client.naming.MetaNamingService in router.config.
  9491.  
  9492. * 2005-09-17  0.6.0.6 released
  9493.  
  9494. 2005-09-17  jrandom
  9495.     * Clean up syndie a bit more and bundle a default introductory post with
  9496.       both new installs and updates.
  9497.     * Typo fixes on the console (thanks bar!)
  9498.  
  9499. 2005-09-17  jrandom
  9500.     * Updated the bandwidth limiter to use two tiers of bandwidth - our normal
  9501.       steady state rate, plus a new limit on how fast we transfer when
  9502.       bursting.  This is different from the old "burst as fast as possible
  9503.       until we're out of tokens" policy, and should help those with congested
  9504.       networks.  See /config.jsp to manage this rate.
  9505.     * Bugfixes in Syndie to handle missing cache files (no data was lost, the
  9506.       old posts just didn't show up).
  9507.     * Log properly in EepPost
  9508.  
  9509. 2005-09-17  jrandom
  9510.     * Added the natively compiled jbigi and patched java service wrapper for
  9511.       OS X.  Thanks Bill Dorsey for letting me use your machine!
  9512.     * Don't build i2p.exe or i2pinstall.exe when run on OS X machines, as we
  9513.       don't bundle the binutils necessary (and there'd be a naming conflict
  9514.       if we did).
  9515.     * Added 'single user' functionality to syndie - if the single user
  9516.       checkbox on the admin page is checked, all users are allowed to control
  9517.       the instance and sync up with remote syndie nodes.
  9518.     * Temporarily disable the x-i2p-gzip in i2ptunnel until it is more closely
  9519.       debugged.
  9520.  
  9521. 2005-09-16  jrandom
  9522.     * Reject unroutable IPs in SSU like we do for the TCP transport (unless
  9523.       you have i2np.udp.allowLocal=true defined - useful for private nets)
  9524.  
  9525. 2005-09-16  jrandom
  9526.     * Adjust I2PTunnelHTTPServer so it can be used for outproxy operators
  9527.       (just specify the spoofed host as an empty string), allowing them to
  9528.       honor x-i2p-gzip encoding.
  9529.     * Let windows users build the exes too (thanks bar and redzara!)
  9530.     * Allow I2PTunnel httpserver operators to disable gzip compression on
  9531.       individual tunnels with the i2ptunnel.gzip=false client option
  9532.       (good idea susi!)
  9533.  
  9534. 2005-09-16  jrandom
  9535.     * Added the i2p.exe and i2pinstall.exe for windows users, using launch4j.
  9536.     * Added runplain.sh for *nix/osx users having problems using the java
  9537.       service wrapper (called from the install dir as: sh runplain.sh)
  9538.     * Bundle susidns and syndie, with links on the top nav
  9539.     * Have I2PTunnelHTTPClient and I2PTunnelHTTPServer use the x-i2p-gzip
  9540.       content-encoding (if offered), reducing the payload size before it
  9541.       reaches the streaming lib.  The existing compression is at the i2cp
  9542.       level, so we've been packetizing 4KB of uncompressed data and then
  9543.       compressing those messages, rather than compressing and then packetizing
  9544.       4KB of compressed data.  This should reduce the number of round trips
  9545.       to fetch web pages substantially.
  9546.     * Adjust the startup and timing of the addressbook so that susidns always
  9547.       has config to work off, and expose a method for susidns to tell it to
  9548.       reload its config and rerun.
  9549.  
  9550. 2005-09-15  jrandom
  9551.     * Error handling for failed intro packets (thanks red.hand!)
  9552.     * More carefully verify intro addresses
  9553.  
  9554. 2005-09-13  jrandom
  9555.     * More careful error handling with introductions (thanks dust!)
  9556.     * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
  9557.     * Hide the shitlist on the summary so it doesn't confuse new users.
  9558.  
  9559. 2005-09-12  comwiz
  9560.     * Migrated the router tests to junit
  9561.  
  9562. 2005-09-12  jrandom
  9563.     * Removed guaranteed delivery mode entirely (so existing i2phex clients
  9564.       using it can get the benefits of mode=best_effort).  Guaranteed delivery
  9565.       is offered at the streaming lib level.
  9566.     * Improve the peer selection code for peer testing, as everyone now
  9567.       supports tests.
  9568.     * Give the watchdog its fangs - if it detects obscene job lag or if
  9569.       clients have been unable to get a leaseSet for more than 5 minutes,
  9570.       restart the router.  This was disabled a year ago due to spurious
  9571.       restarts, and can be disabled by "watchdog.haltOnHang=false", but the
  9572.       cause of the spurious restarts should be gone.
  9573.  
  9574. 2005-09-12  jrandom
  9575.     * Bugfix for skewed store which could kill a UDP thread (causing complete
  9576.       comm failure and eventual OOM)
  9577.  
  9578. 2005-09-12  jrandom
  9579.     * More aggressively publish updated routerInfo.
  9580.     * Expose the flag to force SSU introductions on the router console
  9581.     * Don't give people the option to disable SNTP time sync, at least not
  9582.       through the router console, because there is no reason to disable it.
  9583.       No, not even if your OS is "ntp synced", because chances are, its not.
  9584.  
  9585. 2005-09-10  jrandom
  9586.     * Test the router's reachability earlier and more aggressively
  9587.     * Use the low level bandwidth limiter's rates for the router console, and
  9588.       if the router has net.i2p.router.transport.FIFOBandwidthLimiter=INFO in
  9589.       the logger config, keep track of the 1 second transfer rates as the stat
  9590.       'bw.sendBps1s' and 'bw.recvBps1s', allowing closer monitoring of burst
  9591.       behavior.
  9592.  
  9593. 2005-09-09  jrandom
  9594.     * Added preliminary support for NAT hole punching through SSU introducers
  9595.     * Honor peer test results from peers that we have an SSU session with if
  9596.       those sessions are idle for 3 minutes or more.
  9597.  
  9598. 2005-09-09  cervantes
  9599.     * New build due to change in build number :P (thanks ugha!)
  9600.  
  9601. 2005-09-07  BarkerJr
  9602.     * HTML cleanup for the router console (thanks!)
  9603.  
  9604. 2005-09-07  jrandom
  9605.     * Lay the foundation for 'client routers' - the ability for peers to opt
  9606.       out of participating in tunnels entirely due to firewall/NAT issues.
  9607.       Individual routers have control over where those peers are used in
  9608.       tunnels - in outbound or inbound, exploratory or client tunnels, or
  9609.       none at all.  The defaults with this build are to simply act as before -
  9610.       placing everyone as potential participants in any tunnel.
  9611.     * Another part of the foundation includes the option for netDb
  9612.       participants to refuse to answer queries regarding peers who are marked
  9613.       as unreachable, though this too is disabled by default (meaning the
  9614.       routerInfo is retrievable from the netDb).
  9615.  
  9616. 2005-09-05  jrandom
  9617.     * Expose the HTTP headers to EepGet status listeners
  9618.     * Handle DSA key failures properly (if the signature is not invertable, it
  9619.       is obviously invalid)
  9620.  
  9621. 2005-09-04  jrandom
  9622.     * Don't persist peer profiles until we are shutting down, as the
  9623.       persistence process gobbles RAM and wall time.
  9624.     * Bugfix to allow you to check/uncheck the sharedClient setting on the
  9625.       I2PTunnel web interface (thanks BarkerJr!)
  9626.     * Be more careful when expiring a failed tunnel message fragment so we
  9627.       don't drop the data while attempting to read it.
  9628.  
  9629. * 2005-09-02  0.6.0.5 released
  9630.  
  9631. 2005-09-02  jrandom
  9632.     * Don't refuse to send a netDb store if the targetted peer has failed a
  9633.       bit (the value was an arbitrary amount).
  9634.     * Logging changes
  9635.  
  9636. * 2005-09-01  0.6.0.4 released
  9637.  
  9638. 2005-09-01  jrandom
  9639.     * Don't send out a netDb store of a router if it is more than a few hours
  9640.       old, even if someone asked us for it.
  9641.  
  9642. 2005-08-31  jrandom
  9643.     * Don't publish leaseSets to the netDb if they will never be looked for -
  9644.       namely, if they are for destinations that only establish outbound
  9645.       streams.  I2PTunnel's 'client' and 'httpclient' proxies have been
  9646.       modified to tell the router that it doesn't need to publish their
  9647.       leaseSet (by setting the I2CP config option 'i2cp.dontPublishLeaseSet'
  9648.       to 'true').
  9649.     * Don't publish the top 10 peer rankings of each router in the netdb, as
  9650.       it isn't being watched right now.
  9651.  
  9652. 2005-08-29  jrandom
  9653.     * Added the new test Floodfill netDb
  9654.  
  9655. 2005-08-27  jrandom
  9656.     * Minor logging and optimization tweaks in the router and SDK
  9657.     * Use ISO-8859-1 in the XML files (thanks redzara!)
  9658.     * The consolePassword config property can now be used to bypass the router
  9659.       console's nonce checking, allowing CLI restarts
  9660.  
  9661. 2005-08-24  jrandom
  9662.     * Catch errors with corrupt tunnel messages more gracefully (no need to
  9663.       kill the thread and cause an OOM...)
  9664.     * Don't skip shitlisted peers for netDb store messages, as they aren't
  9665.       necessarily shitlisted by other people (though they probably are).
  9666.     * Adjust the netDb store per-peer timeout based on each particular peer's
  9667.       profile (timeout = 4x their average netDb store response time)
  9668.     * Don't republish leaseSets to *failed* peers - send them to peers who
  9669.       replied but just didn't know the value.
  9670.     * Set a 5 second timeout on the I2PTunnelHTTPServer reading the client's
  9671.       HTTP headers, rather than blocking indefinitely.  HTTP headers should be
  9672.       sent entirely within the first streaming packet anyway, so this won't be
  9673.       a problem.
  9674.     * Don't use the I2PTunnel*Server handler thread pool by default, as it may
  9675.       prevent any clients from accessing the server if the handlers get
  9676.       blocked by the streaming lib or other issues.
  9677.     * Don't overwrite a known status (OK/ERR-Reject/ERR-SymmetricNAT) with
  9678.       Unknown.
  9679.  
  9680. 2005-08-23  jrandom
  9681.     * Removed the concept of "no bandwidth limit" - if none is specified, its
  9682.       16KBps in/out.
  9683.     * Include ack packets in the per-peer cwin throttle (they were part of the
  9684.       bandwidth limit though).
  9685.     * Tweak the SSU cwin operation to get more accurrate estimates under
  9686.       congestions.
  9687.     * SSU improvements to resend more efficiently.
  9688.     * Added a basic scheduler to eepget to fetch multiple files sequentially.
  9689.  
  9690. * 2005-08-21  0.6.0.3 released
  9691.  
  9692. 2005-08-21  jrandom
  9693.     * If we already have an established SSU session with the Charlie helping
  9694.       test us, cancel the test with the status of "unknown".
  9695.  
  9696. 2005-08-17  jrandom
  9697.     * Revise the SSU peer testing protocol so that Bob verifies Charlie's
  9698.       viability before agreeing to Alice's request.  This doesn't work with
  9699.       older SSU peer test builds, but is backwards compatible (older nodes
  9700.       won't ask newer nodes to participate in tests, and newer nodes won't
  9701.       ask older nodes to either).
  9702.  
  9703. 2005-08-12  jrandom
  9704.     * Keep detailed stats on the peer testing, publishing the results in the
  9705.       netDb.
  9706.     * Don't overwrite the status with 'unknown' unless we haven't had a valid
  9707.       status in a while.
  9708.     * Make sure to avoid shitlisted peers for peer testing.
  9709.     * When we get an unknown result to a peer test, try again soon afterwards.
  9710.     * When a peer tells us that our address is different from what we expect,
  9711.       if we've done a recent peer test with a result of OK, fire off a peer
  9712.       test to make sure our IP/port is still valid.  If our test is old or the
  9713.       result was not OK, accept their suggestion, but queue up a peer test for
  9714.       later.
  9715.     * Don't try to do a netDb store to a shitlisted peer, and adjust the way
  9716.       we monitor netDb store progress (to clear up the high netDb.storePeers
  9717.       stat)
  9718.  
  9719. 2005-08-10  jrandom
  9720.     * Deployed the peer testing implementation to be run every few minutes on
  9721.       each router, as well as any time the user requests a test manually.  The
  9722.       tests do not reconfigure the ports at the moment, merely determine under
  9723.       what conditions the local router is reachable.  The status shown in the
  9724.       top left will be "ERR-SymmetricNAT" if the user's IP and port show up
  9725.       differently for different peers, "ERR-Reject" if the router cannot
  9726.       receive unsolicited packets or the peer helping test could not find a
  9727.       collaborator, "Unknown" if the test has not been run or the test
  9728.       participants were unreachable, or "OK" if the router can receive
  9729.       unsolicited connections and those connections use the same IP and port.
  9730.  
  9731. * 2005-08-08  0.6.0.2 released
  9732.  
  9733. 2005-08-08  jrandom
  9734.     * Add a configurable throttle to the number of concurrent outbound SSU
  9735.       connection negotiations (via i2np.udp.maxConcurrentEstablish=4).  This
  9736.       may help those with slow connections to get integrated at the start.
  9737.     * Further fixlets to the streaming lib
  9738.  
  9739. 2005-08-07  Complication
  9740.     * Display the average clock skew for both SSU and TCP connections
  9741.  
  9742. 2005-08-07  jrandom
  9743.     * Fixed the long standing streaming lib bug where we could lose the first
  9744.       packet on retransmission.
  9745.     * Avoid an NPE when a message expires on the SSU queue.
  9746.     * Adjust the streaming lib's window growth factor with an additional
  9747.       Vegas-esque congestion detection algorithm.
  9748.     * Removed an unnecessary SSU session drop
  9749.     * Reduced the MTU (until we get a working PMTU lib)
  9750.     * Deferr tunnel acceptance until we know how to reach the next hop,
  9751.       rejecting it if we can't find them in time.
  9752.     * If our netDb store of our leaseSet fails, give it a few seconds before
  9753.       republishing.
  9754.  
  9755. * 2005-08-03  0.6.0.1 released
  9756.  
  9757. 2005-08-03  jrandom
  9758.     * Backed out an inadvertant change to the netDb store redundancy factor.
  9759.     * Verify tunnel participant caching.
  9760.     * Logging cleanup
  9761.  
  9762. 2005-08-01  duck
  9763.     * Update IzPack to 3.7.2 (build 2005.04.22). This fixes bug #82.
  9764.  
  9765. 2005-08-01  duck
  9766.     * Fix an addressbook NPE when a new hostname from the master addressbook
  9767.       didn't exist in the router addressbook.
  9768.     * Fix an addressbook bug which caused subscriptions not to be parsed at
  9769.       all. (Oops!)
  9770.  
  9771. 2005-07-31  jrandom
  9772.     * Adjust the netDb search and store per peer timeouts to match the average
  9773.       measured per peer success times, rather than huge fixed values.
  9774.     * Optimized and reverified the netDb peer selection / retrieval process
  9775.       within the kbuckets.
  9776.     * Drop TCP connections that don't have any useful activity in 10 minutes.
  9777.     * If i2np.udp.fixedPort=true, never change the externally published port,
  9778.       even if we are autodetecting the IP address.
  9779.  
  9780. * 2005-07-27  0.6 released
  9781.  
  9782. 2005-07-27  jrandom
  9783.     * Enabled SSU as the default top priority transport, adjusting the
  9784.       config.jsp page accordingly.
  9785.     * Add verification fields to the SSU and TCP connection negotiation (not
  9786.       compatible with previous builds)
  9787.     * Enable the backwards incompatible tunnel crypto change as documented in
  9788.       tunnel-alt.html (have each hop encrypt the received IV before using it,
  9789.       then encrypt it again before sending it on)
  9790.     * Disable the I2CP encryption, leaving in place the end to end garlic
  9791.       encryption (another backwards incompatible change)
  9792.     * Adjust the protocol versions on the TCP and SSU transports so that they
  9793.       won't talk to older routers.
  9794.     * Fix up the config stats handling again
  9795.     * Fix a rare off-by-one in the SSU fragmentation
  9796.     * Reduce some unnecessary netDb resending by inluding the peers queried
  9797.       successfully in the store redundancy count.
  9798.  
  9799. 2005-07-22  jrandom
  9800.     * Use the small thread pool for I2PTunnelHTTPServer (already used for
  9801.       I2PTunnelServer)
  9802.     * Minor memory churn reduction in I2CP
  9803.     * Small stats update
  9804.  
  9805. 2005-07-21  jrandom
  9806.     * Fix in the SDK for a bug which would manifest itself as misrouted
  9807.       streaming packets when a destination has many concurrent streaming
  9808.       connections (thanks duck!)
  9809.     * No more "Graceful shutdown in -18140121441141s"
  9810.  
  9811. 2005-07-20  jrandom
  9812.     * Allow the user to specify an external port # for SSU even if the external
  9813.       host isn't specified (thanks duck!)
  9814.  
  9815. 2005-07-19  jrandom
  9816.     * Further preparation for removing I2CP crypto
  9817.     * Added some validation to the DH key agreement (thanks $anon)
  9818.     * Validate tunnel data message expirations (though not really a problem,
  9819.       since tunnels expire)
  9820.     * Minor PRNG threading cleanup
  9821.  
  9822. 2005-07-15  cervantes
  9823.     * Added workaround for an odd win32 bug in the stats configuration console
  9824.       page which meant only the first checkbox selection was saved.
  9825.  
  9826. 2005-07-15  Romster
  9827.     * Added per group selection toggles in the stats configuration console
  9828.       page.
  9829.  
  9830. 2005-07-13  jrandom
  9831.     * Fixed a recently injected bug in the multitransport bidding which had
  9832.       allowed an essentially arbitrary choice of transports, rather than the
  9833.       properly ordered choice.
  9834.  
  9835. 2005-07-13  jrandom
  9836.     * Fixed a long standing bug where we weren't properly comparing session
  9837.       tags but instead largely depending upon comparing their hashCode,
  9838.       causing intermittent decryption errors.
  9839.  
  9840. 2005-07-12  jrandom
  9841.     * Add some data duplication to avoid a recently injected concurrency
  9842.       problem in the session tag manager (thanks redzara and romster).
  9843.  
  9844. 2005-07-11  jrandom
  9845.     * Reduced the growth factor on the slow start and congestion avoidance for
  9846.       the streaming lib.
  9847.     * Adjusted some of the I2PTunnelServer threading to use a small pool of
  9848.       handlers, rather than launching off new threads which then immediately
  9849.       launch off an I2PTunnelRunner instance (which launches 3 more threads..)
  9850.     * Don't persist session keys / session tags (not worth it, for now)
  9851.     * Added some detection and handling code for duplicate session tags being
  9852.       delivered (root cause still not addressed)
  9853.     * Make the PRNG's buffer size configurable (via the config property
  9854.       "i2p.prng.totalBufferSizeKB=4096")
  9855.     * Disable SSU flooding by default (duh)
  9856.     * Updates to the StreamSink apps for better throttling tests.
  9857.  
  9858. 2005-07-05  jrandom
  9859.     * Use a buffered PRNG, pulling the PRNG data off a larger precalculated
  9860.       buffer, rather than the underlying PRNG's (likely small) one, which in
  9861.       turn reduces the frequency of recalcing.
  9862.     * More tuning to reduce temporary allocation churn
  9863.  
  9864. 2005-07-04  jrandom
  9865.     * Within the tunnel, use xor(IV, msg[0:16]) as the flag to detect dups,
  9866.       rather than the IV by itself, preventing an attack that would let
  9867.       colluding internal adversaries tag a message to determine that they are
  9868.       in the same tunnel.  Thanks dvorak for the catch!
  9869.     * Drop long inactive profiles on startup and shutdown
  9870.     * /configstats.jsp: web interface to pick what stats to log
  9871.     * Deliver more session tags to account for wider window sizes
  9872.     * Cache some intermediate values in our HMACSHA256 and BC's HMAC
  9873.     * Track the client send rate (stream.sendBps and client.sendBpsRaw)
  9874.     * UrlLauncher: adjust the browser selection order
  9875.     * I2PAppContext: hooks for dummy HMACSHA256 and a weak PRNG
  9876.     * StreamSinkClient: add support for sending an unlimited amount of data
  9877.     * Migrate the tests out of the default build jars
  9878.  
  9879. 2005-06-22  Comwiz
  9880.     * Migrate the core tests to junit
  9881.  
  9882. 2005-05-25  duck
  9883.     * Fixed PRNG bug (bugzilla #107)
  9884.  
  9885. 2005-05-01  jrandom
  9886.     * Added a substantial optimization to the AES engine by caching the
  9887.       prepared session keys (duh).
  9888.  
  9889. 2005-05-01  jrandom
  9890.     * Cleaned up the peers page a bit more.
  9891.  
  9892. 2005-04-30  jrandom
  9893.     * Added a small new page to the web console (/peers.jsp) which contains
  9894.       the peer connection information.  This will be cleaned up a lot more
  9895.       before 0.6 is out, but its a start.
  9896.  
  9897. 2005-04-30  jrandom
  9898.     * Reduced some SimpleTimer churn
  9899.  
  9900. 2005-04-29  jrandom
  9901.     * Reduce the peer profile stat coallesce overhead by inlining it with the
  9902.       reorganize.
  9903.     * Limit each transport to at most one address (any transport that requires
  9904.       multiple entry points can include those alternatives in the address).
  9905.  
  9906. 2005-04-28  jrandom
  9907.     * More fixes for the I2PTunnel "other" interface handling (thanks nelgin!)
  9908.     * Add back the code to handle bids from multiple transports (though there
  9909.       is still only one transport enabled by default)
  9910.     * Adjust the router's queueing of outbound client messages when under
  9911.       heavy load by running the preparatory job in the client's I2CP handler
  9912.       thread, thereby blocking additional outbound messages when the router is
  9913.       hosed.
  9914.     * No need to validate or persist a netDb entry if we already have it
  9915.  
  9916. 2005-04-25  smeghead
  9917.     * Added button to router console for manual update checks.
  9918.     * Fixed bug in configupdate.jsp that caused the proxy port to be updated
  9919.       every time the form was submitted even if it hadn't changed.
  9920.  
  9921. 2005-04-24  jrandom
  9922.     * Added a pool of PRNGs using a different synchronization technique,
  9923.       hopefully sufficient to work around IBM's PRNG bugs until we get our
  9924.       own Fortuna.
  9925.     * In the streaming lib, don't jack up the RTT on NACK, and have the window
  9926.       size bound the not-yet-ready messages to the peer, not the unacked
  9927.       message count (not sure yet whether this is worthwile).
  9928.     * Many additions to the messageHistory log.
  9929.     * Handle out of order tunnel fragment delivery (not an issue on the live
  9930.       net with TCP, but critical with UDP).
  9931.  
  9932. * 2005-04-20  0.5.0.7 released
  9933.  
  9934. 2005-04-20  jrandom
  9935.     * In the SDK, we don't actually need to block when we're sending a message
  9936.       as BestEffort (and these days, we're always sending BestEffort).
  9937.     * Pass out client messages in fewer (larger) steps.
  9938.     * Have the InNetMessagePool short circuit dispatch requests.
  9939.     * Have the message validator take into account expiration to cut down on
  9940.       false positives at high transfer rates.
  9941.     * Allow configuration of the probabalistic window size growth rate in the
  9942.       streaming lib's slow start and congestion avoidance phases, and default
  9943.       them to a more conservative value (2), rather than the previous value
  9944.       (1).
  9945.     * Reduce the ack delay in the streaming lib to 500ms
  9946.     * Honor choke requests in the streaming lib (only affects those getting
  9947.       insanely high transfer rates)
  9948.     * Let the user specify an interface besides 127.0.0.1 or 0.0.0.0 on the
  9949.       I2PTunnel client page (thanks maestro^!)
  9950.  
  9951. 2005-04-17  sirup
  9952.     * Added the possibility for i2ptunnel client and httpclient instances to
  9953.       have their own i2p session (and hence, destination and tunnels).  By
  9954.       default, tunnels are shared, but that can be changed on the web
  9955.       interface or with the sharedClient config option in i2ptunnel.config.
  9956.  
  9957. 2005-04-17  jrandom
  9958.     * Marked the net.i2p.i2ptunnel.TunnelManager as deprecated.  Anyone use
  9959.       this?  If not, I want to drop it (lots of tiny details with lots of
  9960.       duplicated semantics).
  9961.  
  9962. 2005-04-17  zzz
  9963.     * Added new user-editable eepproxy error page templates.
  9964.  
  9965. 2005-04-17  jrandom
  9966.     * Revamp the tunnel building throttles, fixing a situation where the
  9967.       rebuild may not recover, and defaulting it to unthrottled (users with
  9968.       slow CPUs may want to set "router.tunnel.shouldThrottle=true" in their
  9969.       advanced router config)
  9970.  
  9971. 2005-04-16  jrandom
  9972.     * Migrated to Bouncycastle's SHA256 and HMAC implementations for efficiency
  9973.  
  9974. 2005-04-12  jrandom
  9975.     * Make sure we don't get cached updates (thanks smeghead!)
  9976.     * Clear out the callback for the TestJob after it passes (only affects the
  9977.       job timing accounting)
  9978.  
  9979. 2005-04-08  smeghead
  9980.     * Added NativeBigInteger benchmark to scripts/i2pbench.sh.
  9981.  
  9982. 2005-04-08  smeghead
  9983.     * Security improvements to TrustedUpdate: signing and verification of the
  9984.       version string along with the data payload for signed update files
  9985.       (consequently the positions of the DSA signature and version string fields
  9986.       have been swapped in the spec for the update file's header); router will
  9987.       no longer perform a trusted update if the signed update's version is lower
  9988.       than or equal to the currently running router's version.
  9989.     * Added two new CLI commands to TrustedUpdate: showversion, verifyupdate.
  9990.     * Extended TrustedUpdate public API for use by third party applications.
  9991.  
  9992. * 2005-04-06  0.5.0.6 released
  9993.  
  9994. 2005-04-05  jrandom
  9995.     * Retry I2PTunnel startup if we are unable to build a socketManager for a
  9996.       client or httpclient tunnel.
  9997.     * Add some basic sanity checking on the I2CP settings (thanks duck!)
  9998.  
  9999. 2005-04-05  jrandom
  10000.     * After a successfull netDb search for a leaseSet, republish it to all of
  10001.       the peers we have tried so far who did not give us the key (up to 10),
  10002.       rather than the old K closest (which may include peers who had given us
  10003.       the key)
  10004.     * Don't wait 5 minutes to publish a leaseSet (duh!), and rather than
  10005.       republish it every 5 minutes, republish it every 3.  In addition, always
  10006.       republish as soon as the leaseSet changes (duh^2).
  10007.     * Minor fix for oddball startup race (thanks travis_bickle!)
  10008.     * Minor AES update to allow in-place decryption.
  10009.  
  10010. 2005-04-03  jrandom
  10011.     * EepGet fix for open-ended HTTP fetches (such as the news.xml
  10012.       feeding the NewsFetcher)
  10013.  
  10014. 2005-04-01  jrandom
  10015.     * Allow editing I2PTunnel server instances with five digit ports
  10016.       (thanks nickless_head!)
  10017.     * More NewsFetcher debugging for reported weirdness
  10018.  
  10019. 2005-04-01  jrandom
  10020.     * Fix to check for missing news file (thanks smeghead!)
  10021.     * Added destination display CLI:
  10022.       java -cp lib/i2p.jar net.i2p.data.Destination privKeyFilename
  10023.     * Added destination display to the web interface (thanks pnspns)
  10024.     * Installed CIA backdoor
  10025.  
  10026. * 2005-03-29  0.5.0.5 released
  10027.  
  10028. 2005-03-29  jrandom
  10029.     * Decreased the initial RTT estimate to 10s to allow more retries.
  10030.     * Increased the default netDb store replication factor from 2 to 6 to take
  10031.       into consideration tunnel failures.
  10032.     * Address some statistical anonymity attacks against the netDb that could
  10033.       be mounted by an active internal adversary by only answering lookups for
  10034.       leaseSets we received through an unsolicited store.
  10035.     * Don't throttle lookup responses (we throttle enough elsewhere)
  10036.     * Fix the NewsFetcher so that it doesn't incorrectly resume midway through
  10037.       the file (thanks nickster!)
  10038.     * Updated the I2PTunnel HTML (thanks postman!)
  10039.     * Added support to the I2PTunnel pages for the URL parameter "passphrase",
  10040.       which, if matched against the router.config "i2ptunnel.passphrase" value,
  10041.       skips the nonce check.  If the config prop doesn't exist or is blank, no
  10042.       passphrase is accepted.
  10043.     * Implemented HMAC-SHA256.
  10044.     * Enable the tunnel batching with a 500ms delay by default
  10045.     * Dropped compatability with 0.5.0.3 and earlier releases
  10046.  
  10047. 2005-03-26  jrandom
  10048.     * Added some error handling and fairly safe to cache data to the streaming
  10049.       lib (good call Tom!)
  10050.  
  10051. 2005-03-25  jrandom
  10052.     * Fixed up building dependencies for the routerconsole on some more
  10053.       aggressive compilers (thanks polecat!)
  10054.  
  10055. * 2005-03-24  0.5.0.4 released
  10056.  
  10057. 2005-03-23  jrandom
  10058.     * Added more intelligent version checking in news.xml, in case we have a
  10059.       version newer than the one specified.
  10060.  
  10061. 2005-03-23  jrandom
  10062.     * Added support for Transfer-Encoding: chunked to the EepGet, so that the
  10063.       cvsweb.cgi doesn't puke on us.
  10064.  
  10065. 2005-03-23  Connelly
  10066.     * Fixed Bugzilla Bug #99 in the SAM Bridge, which caused pending
  10067.       stream send data to not be sent if STREAM CLOSE is issued too fast.
  10068.  
  10069. 2005-03-23  jrandom
  10070.     * Implemented the news fetch / update policy code, as configurated on
  10071.       /configupdate.jsp.  Defaults are to grab the news every 24h (or if it
  10072.       doesn't exist yet, on startup).  No action is taken however, though if
  10073.       the news.xml specifies that a new release is available, an option to
  10074.       update will be shown on the router console.
  10075.     * New initialNews.xml delivered with new installs, and moved news.xml out
  10076.       of the i2pwww module and into the i2p module so that we can bundle it
  10077.       within each update.
  10078.  
  10079. 2005-03-23  jrandom
  10080.     * New /configupdate.jsp page for controlling the update / notification
  10081.       process, as well as various minor related updates.  Note that not all
  10082.       options are exposed yet, and the update detection code isn't in place
  10083.       in this commit - it currently says there is always an update available.
  10084.     * New EepGet component for reliable downloading, with a CLI exposed in
  10085.       java -cp lib/i2p.jar net.i2p.util.EepGet url
  10086.     * Added a default signing key to the TrustedUpdate component to be used
  10087.       for verifying updates.  This signing key can be authenticated via
  10088.       gpg --verify i2p/core/java/src/net/i2p/crypto/TrustedUpdate.java
  10089.     * New public domain SHA1 implementation for the DSA code so that we can
  10090.       handle signing streams of arbitrary size without excess memory usage
  10091.       (thanks P.Verdy!)
  10092.     * Added some helpers to the TrustedUpdate to work off streams and to offer
  10093.       a minimal CLI:
  10094.           TrustedUpdate keygen pubKeyFile privKeyFile
  10095.           TrustedUpdate sign origFile signedFile privKeyFile
  10096.           TrustedUpdate verify signedFile
  10097.  
  10098. 2005-03-22  smeghead
  10099.     * New TrustedUpdate component for signing/verifying files with a DSA
  10100.       signature.
  10101.  
  10102. 2005-03-21  jrandom
  10103.     * Fixed the tunnel fragmentation handler to deal with multiple fragments
  10104.       in a single message properly (rather than release the buffer into the
  10105.       cache after processing the first one) (duh!)
  10106.     * Added the batching preprocessor which will bundle together multiple
  10107.       small messages inside a single tunnel message by delaying their delivery
  10108.       up to .5s, or whenever the pending data will fill a full message,
  10109.       whichever comes first.  This is disabled at the moment, since without the
  10110.       above bugfix widely deployed, lots and lots of messages would fail.
  10111.     * Within each tunnel pool, stick with a randomly selected peer for up to
  10112.       .5s before randomizing and selecting again, instead of randomizing the
  10113.       pool each time a tunnel is needed.
  10114.  
  10115. * 2005-03-18  0.5.0.3 released
  10116.  
  10117. 2005-03-18  jrandom
  10118.     * Minor tweak to the timestamper to help reduce small skews
  10119.     * Adjust the stats published to include only the relevent ones
  10120.     * Only show the currently used speed calculation on the profile page
  10121.     * Allow the full max # resends to be sent, rather than piggybacking the
  10122.       RESET packet along side the final resend (duh)
  10123.     * Add irc.postman.i2p to the default list of IRC servers for new installs
  10124.     * Drop support for routers running 0.5 or 0.5.0.1 while maintaining
  10125.       backwards compatability for users running 0.5.0.2.
  10126.  
  10127. 2005-03-18  jrandom
  10128.     * Eepproxy Fix for corrupted HTTP headers (thanks nickster!)
  10129.     * Fixed case sensitivity issues on the HTTP headers (thanks duck!)
  10130.  
  10131. 2005-03-17  jrandom
  10132.     * Update the old speed calculator and associated profile data points to
  10133.       use a non-tiered moving average of the tunnel test time, avoiding the
  10134.       freshness issues of the old tiered speed stats.
  10135.     * Explicitly synchronize all of the methods on the PRNG, rather than just
  10136.       the feeder methods (sun and kaffe only need the feeder, but it seems ibm
  10137.       needs all of them synchronized).
  10138.     * Properly use the tunnel tests as part of the profile stats.
  10139.     * Don't flood the jobqueue with sequential persist profile tasks, but
  10140.       instead, inject a brief scheduling delay between them.
  10141.     * Reduce the TCP connection establishment timeout to 20s (which is still
  10142.       absurdly excessive)
  10143.     * Reduced the max resend delay to 30s so we can get some resends in when
  10144.       dealing with client apps that hang up early (e.g. wget)
  10145.     * Added more alternative socketManager factories (good call aum!)
  10146.  
  10147. 2005-03-16  jrandom
  10148.     * Adjust the old speed calculator to include end to end RTT data in its
  10149.       estimates, and use that as the primary speed calculator again.
  10150.     * Use the mean of the high capacity speeds to determine the fast
  10151.       threshold, rather than the median.  Perhaps we should use the mean of
  10152.       all active non-failing peers?
  10153.     * Updated the profile page to sort by tier, then alphabetically.
  10154.     * Added some alternative socketManager factories (good call aum!)
  10155.  
  10156. 2005-03-14  jrandom
  10157.     * New strict speed calculator that goes off the actual number of messages
  10158.       verifiably sent through the peer by way of tunnels.  Initially, this only
  10159.       contains the successful message count on inbound tunnels, but may be
  10160.       augmented later to include verified outbound messages, peers queried in
  10161.       the netDb, etc.  The speed calculation decays quickly, but should give
  10162.       a better differential than the previous stat (both values are shown on
  10163.       the /profiles.jsp page)
  10164.  
  10165. 2005-03-11  jrandom
  10166.     * Rather than the fixed resend timeout floor (10s), use 10s+RTT as the
  10167.       minimum (increased on resends as before, of course).
  10168.     * Always prod the clock update listeners, even if just to tell them that
  10169.       the time hasn't changed much.
  10170.     * Added support for explicit peer selection for individual tunnel pools,
  10171.       which will be useful in debugging but not recommended for use by normal
  10172.       end users.
  10173.     * More aggressively search for the next hop's routerInfo on tunnel join.
  10174.     * Give messages received via inbound tunnels that are bound to remote
  10175.       locations sufficient time (taking into account clock skew).
  10176.     * Give alternate direct send messages sufficient time (10s min, not 5s)
  10177.     * Always give the end to end data message the explicit timeout (though the
  10178.       old default was sufficient before)
  10179.     * No need to give end to end messages an insane expiration (+2m), as we
  10180.       are already handling skew on the receiving side.
  10181.     * Don't complain too loudly about expired TunnelCreateMessages (at least,
  10182.       not until after all those 0.5 and 0.5.0.1 users upgrade ;)
  10183.     * Properly keep the sendBps stat
  10184.     * When running the router with router.keepHistory=true, log more data to
  10185.       messageHistory.txt
  10186.     * Logging updates
  10187.     * Minor formatting updates
  10188.  
  10189. 2005-03-08  jrandom
  10190.     * More aggressively adjust the clock
  10191.  
  10192. 2005-03-07  jrandom
  10193.     * Fix the HTTP response header filter to allow multiple headers with the
  10194.       same name (thanks duck and spotteri!)
  10195.  
  10196. * 2005-03-06  0.5.0.2 released
  10197.  
  10198. 2005-03-06  jrandom
  10199.     * Allow the I2PTunnel web interface to select streaming lib options for
  10200.       individual client tunnels, rather than sharing them across all of them,
  10201.       as we do with the session options.  This way people can (and should) set
  10202.       the irc proxy to interactive and the eepproxy to bulk.
  10203.     * Added a startRouter.sh script to new installs which simply calls
  10204.       "sh i2prouter start".  This should make it clear how people should start
  10205.       I2P.
  10206.     * Properly expand the HTTP response header buffer (thanks shendaras!)
  10207.  
  10208. 2005-03-04  jrandom
  10209.     * Filter HTTP response headers in the eepproxy, forcing Connection: close
  10210.       so that broken (/malicious) webservers can't allow persistent
  10211.       connections.  All HTTP compliant browsers should now always close the
  10212.       socket.
  10213.     * Enabled the GZIPInputStream's cache (they weren't cached before)
  10214.     * Make sure our first send is always a SYN (duh)
  10215.     * Workaround for some buggy compilers
  10216.  
  10217. 2005-03-03  jrandom
  10218.     * Loop while starting up the I2PTunnel instances, in case the I2CP
  10219.       listener isn't up yet (thanks detonate!)
  10220.     * Implement custom reusable GZIP streams to both reduce memory churn
  10221.       and prevent the exposure of data in the standard GZIP header (creation
  10222.       time, OS, etc).  This is RFC1952 compliant, and backwards compatible,
  10223.       though has only been tested within the confines of I2P's compression use
  10224.       (DataHelper.[de]compress).
  10225.     * Preemptively support the next protocol version, so that after the 0.5.0.2
  10226.       release, we'll be able to drop protocol=2 to get rid of 0.5 users.
  10227.  
  10228. 2005-03-02  jrandom
  10229.     * Fix one substantial OOM cause (session tag manager was only dropping
  10230.       tags once the critical limit was met, rather than honoring their
  10231.       expiration) (duh)
  10232.     * Lots of small memory fixes
  10233.     * Double the allowable concurrent outstanding tunnel build tasks (20)
  10234.  
  10235. 2005-03-01  jrandom
  10236.     * Really disable the streaming lib packet caching
  10237.     * Synchronized a message handling point in the SDK (even though its use is
  10238.       already essentially single threaded, its better to play it safe)
  10239.     * Don't add new RepublishLeaseSetJobs on failure, just requeue up the
  10240.       existing one (duh)
  10241.     * Throttle the number of concurrent pending tunnel builds across all
  10242.       pools, in addition to simply throttling the number of new requests per
  10243.       minute for each pool individually.  This should avoid the cascading
  10244.       failure when tunnel builds take too long, as no new builds will be
  10245.       created until the previous ones are handled.
  10246.     * Factored out and extended the DataHelper's unit tests for dealing with
  10247.       long and date formatting.
  10248.     * Explicitly specify the HTTP auth realm as "i2prouter", though this
  10249.       alone doesn't address the bug where jetty asks for authentication too
  10250.       much.  (thanks orion!)
  10251.     * Updated the StreamSinkServer to ignore all read bytes, rather than write
  10252.       them to the filesystem.
  10253.  
  10254. 2005-02-27  jrandom
  10255.     * Don't rerequest leaseSets if there are already pending requests
  10256.     * Reverted the insufficiently tested caching in the DSA/SHA1 impl, and
  10257.       temporary disabled the streaming lib packet caching.
  10258.     * Reduced the resend RTT penalty to 10s
  10259.  
  10260. 2005-02-26  jrandom
  10261.     * Force 1.3-isms on the precompiled jsps too (thanks laberhost)
  10262.  
  10263. 2005-02-26  jrandom
  10264.     * Further streaming lib caching improvements
  10265.     * Reduce the minimum RTT (used to calculate retry timeouts), but also
  10266.       increase the RTT on resends.
  10267.     * Lower the default message size to 4KB from 16KB to further reduce the
  10268.       chance of failed fragmentation.
  10269.     * Extend tunnel rebuild throttling to include fallback rebuilds
  10270.     * If there are less than 20 routers known, don't drop the last 20 (to help
  10271.       avoid dropping all peers under catastrophic failures)
  10272.     * New stats for end to end messages - "client.leaseSetFoundLocally",
  10273.       "client.leaseSetFoundRemoteTime", and "client.leaseSetFailedRemoteTime"
  10274.  
  10275. 2005-02-24  jrandom
  10276.     * Throttle the number of tunnel rebuilds per minute, preventing CPU
  10277.       overload under catastrophic failures (thanks Tracker and cervantes!)
  10278.     * Block the router startup process until we've initialized the clock
  10279.  
  10280. 2005-02-24  jrandom
  10281.     * Cache temporary memory allocation in the DSA's SHA1 impl, and the packet
  10282.       data in the streaming lib.
  10283.     * Fixed a streaming lib bug where the connection initiator would fail the
  10284.       stream if the ACK to their SYN was lost.
  10285.  
  10286. 2005-02-23  jrandom
  10287.     * Now that we don't get stale SAM sessions, it'd be nice if we didn't
  10288.       get stale tunnel pools, don't you think?
  10289.  
  10290. * 2005-02-23  0.5.0.1 released
  10291.  
  10292. 2005-02-22  jrandom
  10293.     * Reworked the tunnel (re)building process to remove the tokens and
  10294.       provide cleaner controls on the tunnels built.
  10295.     * Fixed situations where the timestamper wanted to test more servers than
  10296.       were provided (thanks Tracker!)
  10297.     * Get rid of the dead SAM sessions by using the streaming lib's callbacks
  10298.       (thanks Tracker!)
  10299.  
  10300. 2005-02-22  jrandom
  10301.     * Temporary workaround for the I2CP disconnect bug (have the streaminglib
  10302.       try to automatically reconnect on accept()/connect(..)).
  10303.     * Loop check for expired lease republishing (just in case)
  10304.  
  10305. 2005-02-22  jrandom
  10306.     * Adjusted (and fixed...) the timestamper change detection
  10307.     * Deal with a rare reordering bug at the beginning of a stream (so we
  10308.       don't drop it unnecessarily)
  10309.     * Cleaned up some dropped message handling in the router
  10310.     * Reduced job queue churn when dealing with a large number of tunnels by
  10311.       sharing an expiration job
  10312.     * Keep a separate list of the most recent CRIT messages (shown on the
  10313.       logs.jsp).  This way they don't get buried among any other messages.
  10314.     * For clarity, display the tunnel variance config as "Randomization" on
  10315.       the web console.
  10316.     * If lease republishing fails (boo! hiss!) try it again
  10317.     * Actually fix the negative jobLag in the right place (this time)
  10318.     * Allow reseeding when there are less than 10 known peer references
  10319.     * Lots of logging updates.
  10320.  
  10321. 2005-02-20  jrandom
  10322.     * Allow the streaming lib resend frequency to drop down to 20s as the
  10323.       minimum, so that up to 2 retries can get sent on an http request.
  10324.     * Add further limits to failsafe tunnels.
  10325.     * Keep exploratory and client tunnel testing and building stats separate.
  10326.     * Only use the 60s period for throttling tunnel requests due to transient
  10327.       network overload.
  10328.     * Rebuild tunnels earlier (1-3m before expiration, by default)
  10329.     * Cache the next hop's routerInfo for participating tunnels so that the
  10330.       tunnel participation doesn't depend on the netDb.
  10331.     * Fixed a long standing bug in the streaming lib where we wouldn't always
  10332.       unchoke messages when the window size grows.
  10333.     * Make sure the window size never reaches 0 (duh)
  10334.  
  10335. 2005-02-20  jrandom
  10336.     * Only build failsafe tunnels if we need them
  10337.     * Properly implement the selectNotFailingPeers so that we get a random
  10338.       selection of peers, rather than using the strictOrdering (thanks dm!)
  10339.     * Don't include too many "don't tell me about" peer references in the
  10340.       lookup message - only send the 10 peer references closest to the target.
  10341.  
  10342. 2005-02-19  jrandom
  10343.     * Only build new extra tunnels on failure if we don't have enough
  10344.     * Fix a fencepost in the tunnel building so that e.g. a variance of
  10345.       2 means +/- 2, not +/- 1 (thanks dm!)
  10346.     * Avoid an NPE on client disconnect
  10347.     * Never select a shitlisted peer to participate in a tunnel
  10348.     * Have netDb store messages timeout after 10s, not the full 60s (duh)
  10349.     * Keep session tags around for a little longer, just in case (grr)
  10350.     * Cleaned up some closing event issues on the streaming lib
  10351.     * Stop bundling the jetty 5.1.2 and updated wrapper.config in the update
  10352.       so that 0.4.* users will need to do a clean install, but we don't need
  10353.       to shove an additional 2MB in each update to those already on 0.5.
  10354.     * Imported the susimail css (oops, thanks susi!)
  10355.  
  10356. * 2005-02-18  0.5 released
  10357.  
  10358. 2005-02-17  jrandom
  10359.     * If the clock is adjusted during a job run, don't act as if the job took
  10360.       negative time.
  10361.  
  10362. 2005-02-17  jrandom
  10363.     * Included the GPL'ed susimail 0.13 by default (thanks susi23!)
  10364.  
  10365. 2005-02-17  jrandom
  10366.     * Fixed the braindead tunnel testing logic
  10367.     * If a large number of tunnels are failing (within the last 5-10 minutes)
  10368.       and the current tunnel pool's configuration allows it, randomly build a
  10369.       zero hop tunnel to replace failed tunnels.
  10370.     * Enable postman's POP3 and SMTP tunnels by default
  10371.  
  10372. 2005-02-16  jrandom
  10373.     * Added some error handling when the number of session tags exceeds the
  10374.       realistic capacity, dropping a random chunk of received tag sets and
  10375.       conducting some minor analysis of the remaining ones.  This is a part
  10376.       of a pretty serious error condition, and logs as CRIT (if/when people
  10377.       see "TOO MANY SESSION TAGS!", please let me know the full log line it
  10378.       puts in the wrapper.log or /logs.jsp)
  10379.     * Update the addressbook to only write to the published hosts location
  10380.       if the addressbook's config contains "should_publish=true" (by default,
  10381.       it contains "should_publish=false")
  10382.  
  10383. 2005-02-16  jrandom
  10384.     * (Merged the 0.5-pre branch back into CVS HEAD)
  10385.     * Replaced the old tunnel routing crypto with the one specified in
  10386.       router/doc/tunnel-alt.html, including updates to the web console to view
  10387.       and tweak it.
  10388.     * Provide the means for routers to reject tunnel requests with a wider
  10389.       range of responses:
  10390.         probabalistic rejection, due to approaching overload
  10391.         transient rejection, due to temporary overload
  10392.         bandwidth rejection, due to persistent bandwidth overload
  10393.         critical rejection, due to general router fault (or imminent shutdown)
  10394.       The different responses are factored into the profiles accordingly.
  10395.     * Replaced the old I2CP tunnel related options (tunnels.depthInbound, etc)
  10396.       with a series of new properties, relevent to the new tunnel routing code:
  10397.         inbound.nickname (used on the console)
  10398.         inbound.quantity (# of tunnels to use in any leaseSets)
  10399.         inbound.backupQuantity (# of tunnels to keep in the ready)
  10400.         inbound.length (# of remote peers in the tunnel)
  10401.         inbound.lengthVariance (if > 0, permute the length by adding a random #
  10402.                                 up to the variance.  if < 0, permute the length
  10403.                                 by adding or subtracting a random # up to the
  10404.                                 variance)
  10405.         outbound.* (same as the inbound, except for the, uh, outbound tunnels
  10406.                     in that client's pool)
  10407.       There are other options, and more will be added later, but the above are
  10408.       the most relevent ones.
  10409.     * Replaced Jetty 4.2.21 with Jetty 5.1.2
  10410.     * Compress all profile data on disk.
  10411.     * Adjust the reseeding functionality to work even when the JVM's http proxy
  10412.       is set.
  10413.     * Enable a poor-man's interactive-flow in the streaming lib by choking the
  10414.       max window size.
  10415.     * Reduced the default streaming lib max message size to 16KB (though still
  10416.       configurable by the user), also doubling the default maximum window
  10417.       size.
  10418.     * Replaced the RouterIdentity in a Lease with its SHA256 hash.
  10419.     * Reduced the overall I2NP message checksum from a full 32 byte SHA256 to
  10420.       the first byte of the SHA256.
  10421.     * Added a new "netId" flag to let routers drop references to other routers
  10422.       who we won't be able to talk to.
  10423.     * Extended the timestamper to get a second (or third) opinion whenever it
  10424.       wants to actually adjust the clock offset.
  10425.     * Replaced that kludge of a timestamp I2NP message with a full blown
  10426.       DateMessage.
  10427.     * Substantial memory optimizations within the router and the SDK to reduce
  10428.       GC churn.  Client apps and the streaming libs have not been tuned,
  10429.       however.
  10430.     * More bugfixes than you can shake a stick at.
  10431.  
  10432. 2005-02-13  jrandom
  10433.     * Updated jbigi source to handle 64bit CPUs.  The bundled jbigi.jar still
  10434.       only contains 32bit versions, so build your own, placing libjbigi.so in
  10435.       your install dir if necessary.  (thanks mule!)
  10436.     * Added support for libjbigi-$os-athlon64 to NativeBigInteger and CPUID
  10437.       (thanks spaetz!)
  10438.  
  10439. 2005-02-10  smeghead
  10440.     * Initial check-in of Pants, a new utility to help us manage our 3rd-party
  10441.       dependencies (Fortuna, Jetty, Java Service Wrapper, etc.). Some parts of
  10442.       Pants are still non-functional at this time so don't mess with it yet
  10443.       unless you want to potentially mangle your working copy of CVS.
  10444.  
  10445. 2005-02-09  duck
  10446.     * Allow an unneeded newline in the SAM client connection without
  10447.       disconnecting.
  10448.  
  10449. 2005-02-07  jrandom
  10450.     * Fixed a race in the streaming lib's delayed flush algorithm (thanks anon!)
  10451.  
  10452. 2005-02-06  Sugadude
  10453.     * Added a filter to the addressbook to remove entries that dont end in ".i2p"
  10454.  
  10455. 2005-02-03  smeghead
  10456.     * Added Ant buildfile in apps/fortuna for creating a custom Fortuna PRNG jar
  10457.       library from GNU Crypto's CVS HEAD sources.
  10458.  
  10459. 2005-01-26  smeghead
  10460.     * i2pProxy.pac, i2pbench.sh, and i2ptest.sh are now shipped with the dist
  10461.       packages and installed to $i2pinstalldir/scripts.
  10462.     * Added command line params to i2ptest.sh and i2pbench.sh: --gij to run them
  10463.       using gij + libgcj, and --sourcedir to run them from the source tree
  10464.       instead of the installation directory.
  10465.     * Fixed unreachable for() statement clause in the KBucketImpl class that was
  10466.       causing gcj to toss a compilation warning (jrandom++).
  10467.  
  10468. 2005-01-26  smeghead
  10469.     * Added a couple of scripts, i2ptest.sh and i2pbench.sh, to manage the core
  10470.       tests and benchmarks.
  10471.     * Routerconsole now builds under gcj 3.4.3.
  10472.     * Corrected divide by zero error in TunnelId class under gcj (jrandom++).
  10473.  
  10474. 2005-01-25  smeghead
  10475.     * Tweaked some classes to enable gcj 3.4.3 to compile the router and
  10476.       supporting apps (except for the routerconsole which is still being
  10477.       investigated).
  10478.  
  10479. 2005-01-24  smeghead
  10480.     * C#-ification of sam-sharp: interface greatly simplified using delegates
  10481.       and events; SamBaseEventHandler provides basic implementation and helper
  10482.       methods but is now optional.
  10483.     * NAnt buildfile and README added for sam-sharp.
  10484.  
  10485. 2005-01-23  smeghead
  10486.     * Port the java SAM client library to mono/C# and released into the
  10487.       public domain.  The 0.1 version of this port is available in CVS as
  10488.       i2p/apps/sam/csharp/src/I2P.SAM.Client.  The other nonfunctional C#
  10489.       library has been removed.
  10490.  
  10491. 2005-01-21  Jhor
  10492.     * Updated jbigi build scripts for OSX.
  10493.  
  10494. 2005-01-21  jrandom
  10495.     * Added support for OSX to the NativeBigInteger code so that it will look
  10496.       in the classpath for libjbigi-osx-none.jnilib.  At the moment, that file
  10497.       is not bundled with the shipped jbigi.jar yet though.
  10498.  
  10499. 2005-01-18  jrandom
  10500.     * Increased the max # session tags maintained and decreased slightly the
  10501.       period over which they are gathered.
  10502.  
  10503. 2005-01-17  jrandom
  10504.     * Added meaningful support for adjusting the preferred message size in the
  10505.       streaming lib by setting the i2p.streaming.maxMessageSize=32768 (or
  10506.       whatever).  The other side will mimic a reduction (but never an increase).
  10507.     * Always make sure to use distinct ConnectionOption objects for each
  10508.       connection (duh)
  10509.     * Reduced the default ACK delay to 500ms on in the streaming lib
  10510.     * Only shrink the streaming window once per window
  10511.     * Don't bundle a new jetty.xml with updates
  10512.     * Catch another local routerInfo corruption issue on startup.
  10513.  
  10514. 2005-01-15  cervantes
  10515.     * Added support to the eepproxy for URLs such as
  10516.       http://localhost:4444/eepproxy/foo.i2p/bar/baz or even
  10517.       http://localhost:4444/eepproxy/foo.i2p/?i2paddresshelper=base64
  10518.  
  10519. 2005-01-15  jrandom
  10520.     * Caught a series of (previously unhandled) errors caused by requeueing
  10521.       messages that had timed out on the TCP transport (thanks mae^!)
  10522.     * Reduce the barrier to dropping session tags on streaming lib resends -
  10523.       every fourth send should drop the tags, forcing ElGamal encryption.  This
  10524.       will help speed up the recovery after a disconnect, rather than the drop
  10525.       every fifth send.
  10526.  
  10527. * 2005-01-06  0.4.2.6 released
  10528.  
  10529. 2005-01-06  jrandom
  10530.     * Added a startup message to the addressbook, printing its version number
  10531.       to stdout (which is sent to wrapper.config) when it loads.
  10532.     * Updated the addressbook to reread the config file periodically
  10533.     * Added orion.i2p to the list of eepsites on the default homepage
  10534.  
  10535. 2005-01-05  jrandom
  10536.     * Handle unexpected network read errors more carefully (thanks parg!)
  10537.     * Added more methods to partially compare (DataHelper) and display
  10538.       arrays (Base64.encode).
  10539.     * Exposed the AES encryptBlock/decryptBlock on the context.aes()
  10540.     * Be more generous on the throttle when just starting up the router
  10541.     * Fix a missing scheduled event in the streaming lib (caused after reset)
  10542.     * Add a new DisconnectListener on the I2PSocketManager to allow
  10543.       notification of session destruction.
  10544.     * Make sure our own router identity is valid, and if it isn't, build a new
  10545.       one and restart the router.  Alternately, you can run the Router with
  10546.       the single command line argument "rebuild" and it will do the same.
  10547.  
  10548. 2004-12-31  ragnarok
  10549.     * Integrated latest addressbook changes (2.0.3) which include support for
  10550.       deploying as a .war file with no existing addressbook configuration.
  10551.     * Updated main build process to bundle the addressbook.war in the
  10552.       i2pinstall.jar and i2pupdate.zip.
  10553.  
  10554. 2004-12-31  jrandom
  10555.     * Speling fxi (thanks digum!)
  10556.     * Bugfix for the I2PTunnel web interface so that it now properly launches
  10557.       newly added tunnels that are defined to be run on startup (thanks ugha!)
  10558.  
  10559. 2004-12-30  jrandom
  10560.     * Revised the I2PTunnel client and httpclient connection establishment
  10561.       throttles.  There is now a pool of threads that build the I2PSocket
  10562.       connections with a default size of 5, configurable via the I2PTunnel
  10563.       client option 'i2ptunnel.numConnectionBuilders' (if set to 0, it will
  10564.       not throttle the number of concurrent builders, but will launch a thread
  10565.       per socket during establishment).  In addition, sockets accepted but
  10566.       not yet allocated to one of the connection builders will be destroyed
  10567.       after 30 seconds, configurable via 'i2ptunnel.maxWaitTime' (if set to
  10568.       0, it will wait indefinitely).
  10569.  
  10570. 2004-12-29  jrandom
  10571.     * Imported Ragnarok's addressbook source (2.0.2) which is built but not
  10572.       deployed in the i2pinstall.jar/i2pupdate.zip (yet).
  10573.     * Don't treat connection inactivity closure as a connection error.
  10574.  
  10575. 2004-12-29  jrandom
  10576.     * Add in a new keepalive event on each TCP connection, proactively sending
  10577.       a (tiny) time message every minute or two, as well as killing the
  10578.       connection if no message has been fully sent within 5 minutes or so.
  10579.       This should help deal with hung connections from IP address changes.
  10580.  
  10581. 2004-12-28  jrandom
  10582.     * Cleaned up the resending and choking algorithm in the streaming lib.
  10583.     * Removed the read timeout override for I2PTunnel's httpclient, allowing
  10584.       it to use the default for the streaming lib.
  10585.     * Revised ack triggers in the streaming lib.
  10586.     * Logging.
  10587.  
  10588. * 2004-12-21  0.4.2.5 released
  10589.  
  10590. 2004-12-21  jrandom
  10591.     * Track a new stat for expired client leases (client.leaseSetExpired).
  10592.  
  10593. 2004-12-21  jrandom
  10594.     * Cleaned up the postinstall/startup scripts a bit more to handle winME,
  10595.       and added windows info to the headless docs. (thanks ardvark!)
  10596.     * Fixed a harmless (yet NPE inspiring) race during the final shutdown of
  10597.       a stream (thanks frosk!)
  10598.     * Add a pair of new stats for monitoring tunnel participation -
  10599.       tunnel.participatingBytesProcessed (total # bytes transferred) and
  10600.       tunnel.participatingBytesProcessedActive (total # bytes transferred for
  10601.       tunnels whose byte count exceed the 10m average).  This should help
  10602.       further monitor congestion issues.
  10603.     * Made the NamingService factory property public (thanks susi!)
  10604.  
  10605. 2004-12-20  jrandom
  10606.     * No longer do a blocking DNS lookup within the jobqueue (thanks mule!)
  10607.     * Set a 60s dns cache TTL, instead of 0s.  Most users who used to use
  10608.       dyndns/etc now just use IP autodetection, so the old "we need ttl=0"
  10609.       reasoning is gone.
  10610.  
  10611. 2004-12-19  jrandom
  10612.     * Fix for a race on startup wrt the new stats (thanks susi!)
  10613.  
  10614. 2004-12-19  jrandom
  10615.     * Added three new stats - router.activePeers, router.fastPeers, and
  10616.       router.highCapacityPeers, updated every minute
  10617.  
  10618. 2004-12-19  jrandom
  10619.     * Added a new i2ptunnel type: 'httpserver', allowing you to specify what
  10620.       hostname should be sent to the webserver.  By default, new installs will
  10621.       have an httpserver pointing at their jetty instance with the spoofed
  10622.       name 'mysite.i2p' (editable on the /i2ptunnel/edit.jsp page).
  10623.  
  10624. 2004-12-19  scintilla
  10625.     * Convert native jcpuid code from C++ to C. This should alleviate build
  10626.       problems experienced by some users.
  10627.  
  10628. * 2004-12-18  0.4.2.4 released
  10629.  
  10630. 2004-12-16  jrandom
  10631.     * Catch another oddball case for a reset connection in the streaming lib.
  10632.     * Add a dumpprofile.jsp page, called with ?peer=base64OfPeerHash, which
  10633.       dumps the current state of that peer's profile.  Instead of the full
  10634.       base64, you can pass in however many characters you have and it will
  10635.       return the first match found.
  10636.  
  10637. 2004-12-16  jrandom
  10638.     * Remove the randomized factor in the tunnel rejection by bandwidth -
  10639.       we now accept the request if we've allocated less than our limit
  10640.       and reject it if we've allocated more.
  10641.     * Stick to the standard capacity scale on tunnel rejection, even for
  10642.       the 10m period.
  10643.     * Build the time message at the very last possible moment
  10644.  
  10645. 2004-12-15  jrandom
  10646.     * Handle hard disconnects more gracefully within the streaming lib, and
  10647.       log unmonitored events more aggressively.
  10648.     * If we drop a peer after connection due to clock skew, log it to the
  10649.       /logs.jsp#connectionlogs with relevent info.  In addition, toss it in
  10650.       the stat 'tcp.disconnectAfterSkew'.
  10651.     * Fixed the formatting in the skew display
  10652.     * Added an ERROR message that is fired once after we run out of
  10653.       routerInfo files (thanks susi!)
  10654.     * Set the connect timeout equal to the streaming lib's disconnect timeout
  10655.       if not already specified (the I2PTunnel httpclient already enforces a
  10656.       60s connect timeout)
  10657.     * Fix for another connection startup problem in the streaming lib.
  10658.     * Fix for a stupid error in the probabalistic drop (rand <= P, not > P)
  10659.     * Adjust the capacity calculations so that tunnel failures alone in the
  10660.       last 10m will not trigger a 0 capacity rank.
  10661.  
  10662. 2004-12-14  jrandom
  10663.     * Periodically send a message along all I2NP connections with the router's
  10664.       current time, allowing the receiving peer to determine that the clock
  10665.       has skewed too much, and hence, disconnect.  For backwards compatability
  10666.       reasons, this is being kludged into a DeliveryStatusMessage (ewww).  The
  10667.       next time we have a backwards compatability break, we can put in a proper
  10668.       message setup for it.
  10669.  
  10670. 2004-12-14  jrandom
  10671.     * Reenable the probabalistic drop on the TCP queues to deal with good old
  10672.       fashioned bandwidth limiting.  However, by default the probability is
  10673.       rigged to reserve 0% of the queue free - meaning we just aggressively
  10674.       fail messages in the queue if we're transferring too slowly.  That
  10675.       reservation factor can be increased with 'tcp.queueFreeFactor=0.25'
  10676.       (or whatever) and the drop code can be disabled with the parameter
  10677.       'tcp.dropProbabalistically=false'.
  10678.     * Still penalize a peer on tunnel failure, but don't immediately drop
  10679.       their capacity to 0.
  10680.     * More aggressively ACK duplicates
  10681.     * Randomize the timestamper period
  10682.     * Display the clock skew on the connection logs when a peer sends it.
  10683.     * Allow the timestamper to fix skews of up to 10 minutes
  10684.     * Logging
  10685.  
  10686. 2004-12-13  jrandom
  10687.     * Added some error checking on the new client send job (thanks duck!)
  10688.     * Implemented tunnel rejection based on bandwidth usage (rejecting tunnels
  10689.       proportional to the bytes allocated in existing tunnels vs the bytes
  10690.       allowed through the bandwidth limiter).
  10691.     * Enable a new configuration parameter for triggering a tunnel rebuild
  10692.       (tunnel.maxTunnelFailures), where that is the max allowed test failures
  10693.       before killing the tunnel (default 0).
  10694.     * Gather more data that we rank capacity by (now we monitor and balance the
  10695.       data from 10m/30m/60m/1d instead of just 10m/60m/1d).
  10696.     * Fix a truncation/type conversion problem on the long term capacity
  10697.       values (we were ignoring the daily stats outright)
  10698.  
  10699. 2004-12-11  jrandom
  10700.     * Fix the missing HTTP timeout, which was caused by the deferred syn used
  10701.       by default.  This, in turn, meant the I2PSocket creation doesn't fail
  10702.       on .connect, but is unable to transfer any data in any direction.  We now
  10703.       detect that condition for the I2PTunnelHTTPClient and throw up the right
  10704.       error page.
  10705.     * Logging
  10706.  
  10707. 2004-12-11  jrandom
  10708.     * Use a simpler and less memory intensive job for processing outbound
  10709.       client messages when the session is in mode=bestEffort.  We can
  10710.       immediately discard the data as soon as its sent the first time,
  10711.       rather than wait for an ack, since we will never internally resend.
  10712.     * Reduce some synchronization to avoid a rare deadlock
  10713.     * Replaced 'localhost' with 127.0.0.1 in the i2ptunnel config, and special
  10714.       case it within the tunnel controller.
  10715.     * Script cleanup for building jbigi/jcpuid
  10716.     * Logging
  10717.  
  10718. * 2004-12-08  0.4.2.3 released
  10719.  
  10720. 2004-12-08  jrandom
  10721.     * Revised the buffering when reading from the SAM client and writing
  10722.       to the stream.  Also added a thread (sigh) so we don't block the
  10723.       SAM client from giving us more messages for abnormally long periods
  10724.       of time.
  10725.     * Display the router version in the logs on startup (oft requested)
  10726.     * Fix a race during the closing of a messageOutputStream
  10727.  
  10728. 2004-12-06  jrandom
  10729.     * Don't do a 'passive flush' while there are already outbound messages
  10730.       unacked.
  10731.     * Show the reseed link if up to 10 peers profiles are active (thanks
  10732.       dburton!)
  10733.  
  10734. 2004-12-06  jrandom
  10735.     * Don't propogate streaming connection failures out to the SAM bridge as
  10736.       fatal errors.
  10737.     * Dont barf on repeated I2CP closure.
  10738.  
  10739. 2004-12-05  jrandom
  10740.     * Explicitly use "127.0.0.1" to bind the I2CP listener, not the JVM's
  10741.       getLocalhost call
  10742.  
  10743. 2004-12-05  jrandom
  10744.     * Default the I2CP listener to localhost only, unless overridden by
  10745.       i2cp.tcp.bindAllInterfaces=true (thanks dm!)
  10746.     * More SAM fixes for things recently broken (whee)
  10747.  
  10748. 2004-12-05  jrandom
  10749.     * Fix the recently broken SAM bridge (duh)
  10750.     * Add a new pair of SAM apps - net.i2p.sam.client.SAMStreamSink and
  10751.       net.i2p.sam.client.SAMStreamSend, mirroring the streaming lib's
  10752.       StreamSink and StreamSend apps for transferring files.
  10753.     * Make the passive flush timer fire more frequently.
  10754.  
  10755. 2004-12-05  jrandom
  10756.     * Fixed some links in the console (thanks ugha!) and the javadoc
  10757.       (thanks dinoman!)
  10758.     * Fix the stream's passive flush timer (oh, its supposed to work?)
  10759.  
  10760. 2004-12-03  jrandom
  10761.     * Toss in a small pool of threads (3) to execute the events queued up with
  10762.       the SimpleTimer, as we do currently see the occational event
  10763.       notification spiking up to a second or so.
  10764.     * Implement a SAM client API in java, useful for event based streaming (or
  10765.       for testing the SAM bridge)
  10766.     * Added support to shut down the SAM bridge on OOM (useful if the SAM
  10767.       bridge is being run outside of the router).
  10768.     * Include the SAM test code in the sam.jar
  10769.     * Remove an irrelevent warning message from SAM, which was caused by
  10770.       perfectly normal operation due to a session being closed.
  10771.     * Removed some unnecessary synchronization in the streaming lib's
  10772.       PacketQueue
  10773.     * More quickly clean up the memory used by the streaming lib by
  10774.       immediately killing each packet's resend job as soon as it is ACKed (or
  10775.       cancelled), so that there are no longer any valid pointers to the
  10776.       (potentially 32KB) packet.
  10777.     * Fixed the timestamps dumped to stdout when debugging the PacketHandler.
  10778.     * Drop packets that would expand our inbound window beyond our maximum
  10779.       buffer size (default 32 messages)
  10780.     * Always read the ACK/NACK data from the verified packets received, even
  10781.       if we are going to drop them
  10782.     * Always adjust the window when there are messages ACKed, though do not
  10783.       change its size except as before.
  10784.     * Streamlined some synchronization in the router's I2CP handling
  10785.     * Streamlined some memory allocation in the SAM bridge
  10786.     * Default the streaming lib to disconnect on inactivity, rather than send
  10787.       an empty message.
  10788.  
  10789. 2004-12-01  jrandom
  10790.     * Fix for a race in the streaming lib as caused by some odd SAM activity
  10791.  
  10792. * 2004-12-01  0.4.2.2 released
  10793.  
  10794. 2004-12-01  jrandom
  10795.     * Fixed a stupid typo that inadvertantly allowed persistent HTTP
  10796.       connections to work (thanks duck!)
  10797.     * Make sure we override the inactivity timeout too
  10798.  
  10799. * 2004-12-01  0.4.2.1 released
  10800.  
  10801. 2004-12-01  jrandom
  10802.     * Strip out any of the Accept-* HTTP header lines, and always make sure to
  10803.       include the forged User-agent header.
  10804.     * Adjust the default read timeout on the eepproxy to 60s, unless
  10805.       overridden.
  10806.     * Minor tweak on stream shutdown.
  10807.  
  10808. 2004-11-30  jrandom
  10809.     * Render the burst rate fields on /config.jsp properly (thanks ugha!)
  10810.     * Build in a simple timeout to flush data queued into the I2PSocket but
  10811.       not yet flushed.
  10812.     * Don't explicitly flush after each SAM stream write, but leave it up to
  10813.       the [nonblocking] passive flush.
  10814.     * Don't whine about 10-99 connection events occurring in a second
  10815.     * Don't wait for completion of packets that will not be ACKed (duh)
  10816.     * Adjust the congestion window, even if the packet was resent (duh)
  10817.     * Make sure to wake up any blocking read()'s when the MessageInputStream
  10818.       is close()ed (duh)
  10819.     * Never wait more than the disconnect timeout for a write to complete
  10820.  
  10821. 2004-11-29  jrandom
  10822.     * Minor fixes to avoid unnecessary errors on shutdown (thanks susi!)
  10823.  
  10824. 2004-11-29  jrandom
  10825.     * Reduced contention for local client delivery
  10826.     * Drop the new code that munges the wrapper.config.  Instead, updates that
  10827.       need to change it will include their own wrapper.config in the
  10828.       i2pupdate.zip, overwriting the existing file.  If the file
  10829.       "wrapper.config.updated" is included, it is deleted at first opportunity
  10830.       and the router shut down, displaying a notice that the router must be
  10831.       started again cleanly to allow the changes to the wrapper.config to take
  10832.       effect.
  10833.     * Properly stop accept()ing I2PSocket connections if we close down the
  10834.       session (duh).
  10835.     * Make sure we cancel any outstanding Packets in flight when a connection
  10836.       is terminated (thanks susi!)
  10837.     * Split up the I2PTunnel closing a little further.
  10838.  
  10839. 2004-11-28  jrandom
  10840.     * Accept IP address detection changes with a 2-out-of-3 minimum.
  10841.     * As long as the router is up, keep retrying to bind the I2CP listener.
  10842.     * Decrease the java service wrapper ping frequency to once every 10
  10843.       minutes, rather than once every 5 seconds.
  10844.  
  10845. 2004-11-27  jrandom
  10846.     * Some cleanup and bugfixes for the IP address detection code where we
  10847.       only consider connections that have actually sent and received messages
  10848.       recently as active, rather than the mere presence of a TCP socket as
  10849.       activity.
  10850.  
  10851. 2004-11-27  jrandom
  10852.     * Removed the I2PTunnel inactivity timeout thread, since the new streaming
  10853.       lib can do that (without an additional per-connection thread).
  10854.     * Close the I2PTunnel forwarder threads more aggressively
  10855.  
  10856. 2004-11-27  jrandom
  10857.     * Fix for a fast loop caused by a race in the new streaming library (thanks
  10858.       DrWoo, frontier, pwk_, and thetower!)
  10859.     * Minor updates to the SimpleTimer and Connection to help track down a
  10860.       high CPU usage problem (dumping debug info to stdout/wrapper.log if too
  10861.       many events/tasks fire in a second)
  10862.     * Minor fixes for races on client disconnects (causing NPEs)
  10863.  
  10864. * 2004-11-26  0.4.2 released
  10865.  
  10866. 2004-11-26  jrandom
  10867.     * Enable the new streaming lib as the default.  That means, for any
  10868.       substantial definition, it is NOT BACKWARDS COMPATIBLE.
  10869.  
  10870. 2004-11-25  jrandom
  10871.     * Revised the installer to include start menu and desktop shortcuts for
  10872.       windows platforms, including pretty icons (thanks DrWoo!)
  10873.     * Allow clients specified in clients.config to have an explicit startup
  10874.       delay.
  10875.     * Update the default install to launch a browser pointing at the console
  10876.       whenever I2P starts up, rather than only the first time it starts up
  10877.       (configurable on /configservice.jsp, or in clients.config)
  10878.     * Bugfix to the clock skew checking code to monitor the delta between
  10879.       offsets, not the offset itself (duh)
  10880.     * Router console html update
  10881.     * New (and uuuuugly) code to verify that the wrapper.config contains
  10882.       the necessary classpath entries on update.  If it has to update the
  10883.       wrapper.config, it will stop the JVM and service completely, since the
  10884.       java service wrapper doesn't reread the wrapper.config on JVM restart -
  10885.       requiring the user to manually restart the service after an update.
  10886.     * Increase the TCP connection timeout to 30s (which is obscenely long)
  10887.  
  10888. 2004-11-22  jrandom
  10889.     * Update to the SAM bridge to reduce some unnecessary memory allocation.
  10890.     * New stat to keep track of slow jobs (ones that take more than a second
  10891.       to excute).  This is published in the netDb as jobQueue.jobRunSlow
  10892.  
  10893. 2004-11-21  jrandom
  10894.     * Update the I2PTunnel web interface to include an option for the new
  10895.       streaming lib (which is ignored until the 0.4.2 release).
  10896.     * Revised the I2PTunnel web interface to keep the I2CP options of client
  10897.       and httpclient tunnels in sync, as they all share the same I2CP session.
  10898.  
  10899. 2004-11-21  jrandom
  10900.     * Only allow small clock skews after the first 10 minutes of operation
  10901.       (to prevent later network lag bouncing us way off course - yes, we
  10902.       really need an NTP impl to balance out the network burps...)
  10903.     * Revamp the I2PTunnel web interface startup process so that everything
  10904.       is shown immediately, so that different pieces hanging don't hang
  10905.       the rest, and other minor bugfixes.
  10906.     * Take note of SAM startup error (in case you're already running a SAM
  10907.       bridge...)
  10908.     * Increase the bandwidth limiter burst values available to 10-60s (or
  10909.       whatever is placed in /configadvanced.jsp, of course)
  10910.  
  10911. 2004-11-21  jrandom
  10912.     * Allow end of line comments in the hosts.txt and other config files,
  10913.       using '#' to begin the comments (thanks susi!)
  10914.     * Add support to I2PTunnel's 'client' feature for picking between multiple
  10915.       target destinations (e.g. 'client 6668 irc.duck.i2p,irc.baffled.i2p')
  10916.     * Add a quick link on the left hand nav to reseed if there aren't enough
  10917.       known peers, as well as link to the config page if there are no active
  10918.       peers.  Revised config page accordingly.
  10919.  
  10920. 2004-11-21  jrandom
  10921.     * Destroy ElGamal/AES+SessionTag keys after 15 minutes of inactivity
  10922.       rather that every 15 minutes, and increase the warning period in which
  10923.       we refresh tags from 30s to 2 minutes.
  10924.     * Bugfix for a rare problem closing an I2PTunnel stream where we'd fail
  10925.       to close the I2PSocket (leaving it to timeout).
  10926.  
  10927. 2004-11-19  jrandom
  10928.     * Off-by-one fix to the tunnel pool management code, along side some
  10929.       explicit initialization.  This can affect clients whose lengths are
  10930.       shorter than the router's default (thanks duck!)
  10931.  
  10932. 2004-11-17  jrandom
  10933.     * Fix to propogate i2psocket options into the SAM bridge correctly (thanks
  10934.       Ragnarok!)
  10935.  
  10936. 2004-11-17  jrandom
  10937.     * Minor logging update.
  10938.  
  10939. 2004-11-16  jrandom
  10940.     * Clean up the propogation of i2psocket options so that various streaming
  10941.       libs can honor them more precisely
  10942.  
  10943. 2004-11-16  jrandom
  10944.     * Minor logging update
  10945.  
  10946. 2004-11-14  jrandom
  10947.     * Fix a long standing leak in I2PTunnel (hanging on to i2psocket objects)
  10948.     * Fix a leak injected into the SimpleTimer
  10949.     * Fix a race condition in the tunnel message handling
  10950.  
  10951. 2004-11-13  jrandom
  10952.     * Added throttles on how many I2PTunnel client connections we open at once
  10953.     * Replaced some buffered streams in I2PTunnel with unbuffered streams, as
  10954.       the streaming library used should take care of any buffering.
  10955.     * Added a cache for some objects used in I2PTunnel, especially useful when
  10956.       there are many short lived connections.
  10957.     * Trimmed the SimpleTimer's processing a bit
  10958.  
  10959. 2004-11-10  jrandom
  10960.     * Allow loading the (mini)streaming connection options from the
  10961.       environment.
  10962.     * More defensive programming in the DSA implementation.
  10963.  
  10964. 2004-11-08  jrandom
  10965.     * Remove spurious flush calls from I2PTunnel, and work with the
  10966.       I2PSocket's output stream directly (as the various implementations
  10967.       do their own buffering).
  10968.     * Another pass at a long standing JobQueue bug - dramatically simplify
  10969.       the job management synchronization since we dont need to deal with
  10970.       high contention (unlike last year when we had dozens of queue runners
  10971.       going at once).
  10972.     * Logging
  10973.  
  10974. 2004-11-08  jrandom
  10975.     * Make the SAM bridge more resiliant to bad handshakes (thanks duck!)
  10976.  
  10977. * 2004-11-06  0.4.1.4 released
  10978.  
  10979. 2004-11-06  jrandom
  10980.     * Expose a drop down on the /configclients.jsp to enter the outbound
  10981.       tunnel depth.
  10982.     * Improved *hosts.txt loading
  10983.     * Explicitly override the JVM's timezone settings to use GMT so that
  10984.       any client applications which use timezones won't leak sensitive
  10985.       data (thanks gott!)
  10986.     * Bundle sam.jar in the update (thanks duck!)
  10987.  
  10988. 2004-11-06  jrandom
  10989.     * Fix for a long standing synchronization bug in the SDK that in rare
  10990.       instances can add a few seconds of lag.
  10991.  
  10992. 2004-11-05  jrandom
  10993.     * Bugfixes and unit tests for the SAM bridge to handle quoted message
  10994.       parameters, verify proper operation after multiple session lifetimes,
  10995.       as well as some synchronization problems.
  10996.     * New properties method on the DataHelper class.
  10997.     * Address a race on fast disconnecting clients
  10998.  
  10999. 2004-11-02  jrandom
  11000.     * Fix for a long standing synchronization bug in the JobQueue (and added
  11001.       some kooky flags to make sure it stays dead)
  11002.     * Update the ministreaming lib to force mode=guaranteed if the default
  11003.       lib is used, and mode=best_effort for all other libs.
  11004.  
  11005. 2004-11-02  jrandom
  11006.     * Fixed up the configuration overrides for the streaming socket lib
  11007.       integration so that it properly honors env settings.
  11008.     * More memory usage streamlining (last major revamp for now, i promise)
  11009.  
  11010. 2004-11-01  jrandom
  11011.     * Increase the tunnel test timeout rapidly if our tunnels are failing.
  11012.     * Honor message expirations for some tunnel jobs that were prematurely
  11013.       expired.
  11014.     * Streamline memory usage with temporary object caches and more efficient
  11015.       serialization for SHA256 calculation, logging, and both I2CP and I2NP
  11016.       message handling.
  11017.     * Fix some situations where we forward messages too eagerly.  For a
  11018.       request at the tunnel endpoint, if the tunnel is inbound and the target
  11019.       is remote, honor the message by tunnel routing the data rather than
  11020.       sending it directly to the requested location.
  11021.  
  11022. 2004-10-30  jrandom
  11023.     * Cache the temporary objects used in the AES encryption/decryption
  11024.       process so that AES doesn't require any memory allocation to process
  11025.       data.
  11026.     * Dramatically reduce memory usage within various crypto implementations
  11027.       by avoiding unnecessary (though simplifying) buffers.
  11028.     * If we specify some tags to be sent in an I2CP message explicitly, use
  11029.       only those, not those plus a new set (otherwise we aren't sure on ACK
  11030.       which set was delivered)
  11031.     * Allow configuration for the partial send timeout (how long before
  11032.       resending a message down a different tunnel in a lease).  This can be
  11033.       updated with the "router.clientPartialSendTimeout" router config prop.
  11034.     * Logging
  11035.  
  11036. 2004-10-29  jrandom
  11037.     * Strip the Referer, Via, and From headers completely, rather than
  11038.       inserting a bogus value ("i2p").  This should help with the use of
  11039.       SnipSnap and Geeklog (thanks nickster and DrWoo!)
  11040.  
  11041. 2004-10-27  jrandom
  11042.     * Fix a strange race condition on i2cp client disconnect.
  11043.     * win98 startup fixes (thanks tester-1 and ardvark!)
  11044.     * include build scripts for the new streaming lib (which is NOT ready
  11045.       for use yet, but you can hack around with it)
  11046.  
  11047. 2004-10-24  jrandom
  11048.     * Allow explicit inclusion of session tags in the SDK, enabling the
  11049.       resending of tags bundled with messages that would not otherwise
  11050.       be ACKed.
  11051.     * Don't force mode=guaranteed for end to end delivery - if mode=bestEffort
  11052.       no DeliveryStatusMessage will be bundled (and as such, client apps using
  11053.       it will need to do their own session tag ack/nack).
  11054.     * Handle client errors when notifying them of message availability.
  11055.     * New StreamSinkSend which sends a file to a destination and disconnects.
  11056.     * Update the I2PSocketManagerFactory to build the specific
  11057.       I2PSocketManager instance based on the "i2p.streaming.manager" property,
  11058.       containing the class name of the I2PSocketManager to instantiate.
  11059.  
  11060. 2004-10-23  jrandom
  11061.     * Minor ministreaming lib refactoring to simplify integration of the full
  11062.       streaming lib.
  11063.     * Minor bugfixes to data structure serialization.
  11064.  
  11065. * 2004-10-18  0.4.1.3 released
  11066.  
  11067. 2004-10-18  jrandom
  11068.     * Allow sending messages with a section of a byte array.
  11069.     * Reduced stats published.
  11070.  
  11071. 2004-10-17  jrandom
  11072.     * Don't b0rk on whitespace in the router address.
  11073.  
  11074. 2004-10-16  jrandom
  11075.     * More aggressively reduce the capacity of peers if their tunnels are
  11076.       failing so that we move off them quicker.
  11077.     * Simplify some data structure serialization for reuse in the streaming
  11078.       lib, as well as add support for signing and verifying partial byte
  11079.       arrays.
  11080.     * Logging updates
  11081.  
  11082. 2004-10-16  jrandom
  11083.     * Increased the default minimum tunnel test time to 5 seconds, since we
  11084.       still see the occational message processing time spike to 2 seconds.
  11085.     * Update the SimpleTimer to allow rescheduling a task thats already
  11086.       queued (useful for the new streaming lib).
  11087.  
  11088. 2004-10-15  jrandom
  11089.     * Replaced old minimum tunnel test timeout of 1s with a configurable
  11090.       value (router.config property "router.tunnelTestMinimum", with the
  11091.       default of 2s).
  11092.  
  11093. 2004-10-14  jrandom
  11094.     * Tunnel rejection is no longer a sign of an overwhelmingly loaded
  11095.       peer, so don't use it as a key point of the IsFailing calculator.
  11096.       We still use it as a key point of the Capacity calculator, however.
  11097.  
  11098. 2004-10-14  jrandom
  11099.     * Allow for a configurable tunnel "growth factor", rather than trying
  11100.       to achieve a steady state.  This will let us grow gradually when
  11101.       the router is needed more, rather than blindly accepting the request
  11102.       or arbitrarily choking it at an averaged value.  Configure this with
  11103.       "router.tunnelGrowthFactor" in the router.config (default "1.5").
  11104.     * Adjust the tunnel test timeouts dynamically - rather than the old
  11105.       flat 30s (!!!) timeout, we set the timeout to 2x the average tunnel
  11106.       test time (the deviation factor can be adjusted by setting
  11107.       "router.tunnelTestDeviation" to "3.0" or whatever).  This should help
  11108.       find the 'good' tunnels.
  11109.     * Added some crazy debugging to try and track down an intermittent hang.
  11110.  
  11111. 2004-10-13  jrandom
  11112.     * Fix the probabalistic tunnel reject (we always accepted everything,
  11113.       since the docs on java.util.Random.nextDouble() are wrong..)
  11114.     * Fixed a race on startup (thanks Quadn!)
  11115.  
  11116. 2004-10-12  jrandom
  11117.     * Disable the probabalistic drop by default (enable via the router config
  11118.       property "tcp.dropProbabalistically=true")
  11119.     * Disable the actual watchdog shutdown by default, but keep track of more
  11120.       variables and log a lot more when it occurs (enable via the router
  11121.       config property "watchdog.haltOnHang=true")
  11122.     * Implement some tunnel participation smoothing by refusing requests
  11123.       probabalistically as our participating tunnel count exceeds the previous
  11124.       hour's, or when the 10 minute average tunnel test time exceeds the 60
  11125.       minute average tunnel test time.  The probabilities in both cases are
  11126.       oldAverage / #current, so if you're suddenly flooded with 200 tunnels
  11127.       and you had previously only participated in 50, you'll have a 25% chance
  11128.       of accepting a subsequent request.
  11129.  
  11130. * 2004-10-10  0.4.1.2 released
  11131.  
  11132. 2004-10-10  cervantes
  11133.     * Update the I2PTunnel HTTP proxy to strip out the i2paddresshelper from
  11134.       the request.
  11135.  
  11136. 2004-10-09  jrandom
  11137.     * Added a watchdog timer to do some baseline liveliness checking to help
  11138.       debug some odd errors.
  11139.     * Added a pair of summary stats for bandwidth usage, allowing easy export
  11140.       with the other stats ("bw.sendBps" and "bw.receiveBps")
  11141.     * Trimmed another memory allocation on message reception.
  11142.  
  11143. 2004-10-08  jrandom
  11144.     * Revamp the AESInputStream so it doesn't allocate any temporary objects
  11145.       during its operation.
  11146.  
  11147. 2004-10-08  jrandom
  11148.     * Don't kill the establisher threads during a soft restart.
  11149.     * Attempt to validate the peer's routerInfo earlier during handshaking.
  11150.     * Revamp the AESOutputStream so it doesn't allocate any temporary objects
  11151.       during its operation.
  11152.  
  11153. 2004-10-07  jrandom
  11154.     * Reimplement the I2NP reading with less temporary memory allocation.
  11155.       There is still significant GC churn, especially under load, but this
  11156.       should help.
  11157.     * Catch some oddball errors in the transport (message timeout while
  11158.       establishing).
  11159.  
  11160. 2004-10-07  jrandom
  11161.     * Expire queued messages even when the writer is blocked.
  11162.     * Reimplement most of the I2NP writing with less temporary memory
  11163.       allocations (I2NP reading still gobbles memory).
  11164.  
  11165. 2004-10-06  jrandom
  11166.     * Implement an active queue management scheme on the TCP transports,
  11167.       dropping messages probabalistically as the queue fills up.  The
  11168.       estimated queue capacity is determined by the rate at which messages
  11169.       have been sent to the peer (averaged at 1, 5, and 60m periods).  As
  11170.       we exceed 1/2 of the estimated capacity, we drop messages throughout
  11171.       the queue probabalistically with regards to their size.  This is based
  11172.       on RFC 2309's RED, with the minimum threshold set to 1/2 the
  11173.       estimated connection capacity.  We may want to consider using a send
  11174.       rate and queue size measured across all connections, to deal with our
  11175.       own local bandwidth saturation, but we'll try the per-con metrics first.
  11176.  
  11177. 2004-10-06  jrandom
  11178.     * Enable explicit disabling of the systray entirely for windows machines
  11179.       with strange configurations: add -Dsystray.disable=true to the java
  11180.       command line.  (thanks mihi!)
  11181.  
  11182. 2004-10-05  jrandom
  11183.     * Allow peers on the same LAN to communicate with each other safely even
  11184.       when they cannot talk to each other through the external address.
  11185.  
  11186. 2004-10-05  jrandom
  11187.     * Display how much time is left before the graceful shutdown is complete.
  11188.     * Debug some improperly failed messages on timeout or disconnection.
  11189.  
  11190. 2004-10-05  jrandom
  11191.     * Don't go into a fast busy if an I2PTunnel 'server' is explicitly killed
  11192.       (thanks mule!)
  11193.     * Handle some more error conditions regarding abruptly closing sockets
  11194.       (thanks Jonva!)
  11195.  
  11196. 2004-10-04  jrandom
  11197.     * Update the shitlist to reject a peer for an exponentially increasing
  11198.       period of time (with an upper bounds of an hour).
  11199.     * Various minor stat and debugging fixes
  11200.  
  11201. 2004-10-03  jrandom
  11202.     * Add a new stat logging component to optionally dump the raw stats to
  11203.       disk as they are generated, rather than rely upon the summarized data.
  11204.       By default, this is off, but the router property "stat.logFilters" can
  11205.       be set to a comma delimited list of stats (e.g. "client.sendAckTime")
  11206.       which will be written to the file "stats.log" (or whatever the property
  11207.       "stat.logFile" is set to).  This can also log profile related stats,
  11208.       such as "dbResponseTime" or "tunnelTestResponseTime".
  11209.  
  11210. 2004-10-02  jrandom
  11211.     * Assure that we quickly fail messages bound for shitlisted peers.
  11212.     * Address a race on startup where the first peer contacted could hang the
  11213.       router (thanks Romster!)
  11214.     * Only whine about an intermittent inability to query the time server once
  11215.  
  11216. 2004-10-02  jrandom
  11217.     * Command line utility to verify a peer's reachability - simply run
  11218.       net.i2p.router.transport.tcp.ConnectionHandler hostname port# and it
  11219.       will print out whether that peer is reachable or not (using a simple
  11220.       verification handshake).
  11221.  
  11222. * 2004-10-01  0.4.1.1 released
  11223.  
  11224. 2004-10-01  jrandom
  11225.     * Handle partial reseeds, caused by seeds going away before the download
  11226.       completes (thanks Sugadude!)
  11227.  
  11228. 2004-10-01  jrandom
  11229.     * Explicitly refuse IPv6 addresses, since only some peers support
  11230.       them and we want fully reachable peers.
  11231.  
  11232. 2004-10-01  jrandom
  11233.     * Additional error handling for a variety of transport layer errors.
  11234.  
  11235. * 2004-09-30  0.4.1 released (not backwards compatible)
  11236.  
  11237. 2004-09-30  jrandom
  11238.     * Bundle the configuration necessary to run an eepsite out of the box
  11239.       with Jetty - simply edit ./eepsite/docroot/index.html and give people
  11240.       the key listed on the I2PTunnel configuration page, and its up.
  11241.     * Router console cleanup, and some (off by default) tunnels -
  11242.       smtp.postman.i2p (port 7659), pop.postman.i2p (port 7660), and
  11243.       irc.baffled.i2p (port 7661)
  11244.  
  11245. 2004-09-29  jrandom
  11246.     * Always wipe the Jetty work directory on startup, so that web updates
  11247.       are reflected immediately (Jetty does not honor the cache across
  11248.       multiple executions)
  11249.  
  11250. 2004-09-27  jrandom
  11251.     * Limit the number of connection tags saved to 10,000.  This is a huge
  11252.       limit, but consumes no more than 1MB of RAM.  For now, we drop them
  11253.       randomly after reaching that size, forcing those dropped peers to use
  11254.       a full DH negotiation.
  11255.     * HTML cleanup in the console.
  11256.  
  11257. 2004-09-26  jrandom
  11258.     * Complete rewrite of the TCP transport with IP autodetection and
  11259.       low CPU overhead reconnections.  More concise connectivity errors
  11260.       are listed on the /oldconsole.jsp as well.  The IP autodetection works
  11261.       by listening to the first person who tells you what your IP address is
  11262.       when you have not defined one yourself and you have no other TCP
  11263.       connections.
  11264.     * Update to the I2NP message format to add transparent verification at
  11265.       the I2NP level (beyond standard TCP verification).
  11266.     * Remove a potential weakness in our AESEngine's safeEncrypt and safeDecrypt
  11267.       implementation (rather than verifying with E(H(key)), we now verify with
  11268.       E(H(iv))).
  11269.     * The above changes are NOT BACKWARDS COMPATIBLE.
  11270.     * Removed all of the old unused PHTTP code.
  11271.     * Refactor various methods and clean up some javadoc.
  11272.  
  11273. 2004-09-21  jrandom
  11274.     * Have two tiers of hosts.txt files - the standard "hosts.txt" and
  11275.       the new "userhosts.txt".  Updates to I2P will only overwrite the former,
  11276.       but values stored in the later take precedence.  Both are queried on
  11277.       lookup.
  11278.  
  11279. 2004-09-16  jrandom
  11280.     * Refactor the TCP transport to deal with changing identities gracefully,
  11281.       and to prevent some wasted effort by keeping track of what host+port
  11282.       combinations we are connected to (rather than just the identities).  Also
  11283.       catch a few configuration errors earlier.
  11284.     * Removed no longer relevent methods from the Transport API that were
  11285.       exposing ideas that probably shouldn't be exposed.
  11286.     * Removed the 0.4.0.1 specific files from i2pupdate.zip (relating to script
  11287.       updates)
  11288.  
  11289. 2004-09-13  jrandom
  11290.     * Update for the SDK reconnection to deal with overflow.
  11291.     * Web improvements (@ not # on the /logs.jsp [thanks ugha!] and fixed the
  11292.       rounding on lifetime bandwidth used [thanks gott!]).
  11293.  
  11294. * 2004-09-08  0.4.0.1 released
  11295.  
  11296. 2004-09-08  jrandom
  11297.     * Updated the "Active:" peer count to display the # of connections as well
  11298.       as the number of recently active router identities.
  11299.     * Implement some basic updating code - on startup, if there is a file named
  11300.       "i2pupdate.zip" in the I2P installation directory, extract it, delete it,
  11301.       then restart.
  11302.     * Added an ugly little script to allow launching the router on win9x
  11303.       machines without a dos box (using javaw to run a .bat file).
  11304.     * Logging updates.
  11305.     * Updated VERSION constants to 0.4.0.1
  11306.  
  11307. 2004-09-08  hypercubus
  11308.     * Bugfix: Running the installer as a non-privileged user on Red Hat (and
  11309.       hopefully any other affected *nix systems) now properly discards non-
  11310.       essential directories after installation.
  11311.     * Support for Win9x in the installer and postinstall.bat.
  11312.     * Changed the name of the default installation directory on all platforms
  11313.       from "I2P" to "i2p" in the installer.
  11314.     * Changed "wrapper.conf" to "wrapper.config" for naming consistency with the
  11315.       other configuration files.
  11316.  
  11317. 2004-09-07  cervantes:
  11318.     * Proxy recursion disabled by default (strict)
  11319.     * Password Authentication for session commands
  11320.     * Support for http://path?i2paddresshelper=BASE64
  11321.     * Support for http://i2p/BASE64/path syntax
  11322.  
  11323. 2004-09-07  jrandom
  11324.     * Make sure that peers placed in the 'fast' group are ones we both know
  11325.       how to reach and have been able to reach recently.  These peers may
  11326.       still be placed in the 'high capacity' group however (though that group
  11327.       is only queried if the 'fast' group is too small)
  11328.     * Include some updates to the ProgileOrganizer's CLI.
  11329.  
  11330. 2004-09-07  jrandom
  11331.     * Disable the timestamper by default for all applications except the router
  11332.       (enable via -Dtime.disabled=false)
  11333.     * Simplify the retrieval of the full destination with text based browsers.
  11334.     * Bundle the updated wrapper.config and hosts.txt in the i2pupdate.tar.bz2
  11335.  
  11336. 2004-09-07  jrandom
  11337.     * Write the native libraries to the current directory when they are loaded
  11338.       from a resource, and load them from that file on subsequent runs (in
  11339.       turn, we no longer *cough* delete the running libraries...)
  11340.     * Added support for a graceful restart.
  11341.     * Added new pseudo-shutdown hook specific to the router, allowing
  11342.       applications to request tasks to be run when the router shuts down.  We
  11343.       use this for integration with the service manager, since otherwise a
  11344.       graceful shutdown would cause a timeout, followed by a forced hard
  11345.       shutdown.
  11346.     * Made the capacity calculator a bit more dynamic by not outright ignoring
  11347.       the otherwise valid capacity data for a period with a single rejected
  11348.       tunnel (except for the 10 minute period).  In addition, peers with an
  11349.       equal capacity are ordered by speed rather than by their hashes.
  11350.     * Cleaned up the SimpleTimer, addressing some threading and synchronization
  11351.       issues.
  11352.     * When an I2PTunnel client or httpclient is explicitly closed, destroy the
  11353.       associated session (unless there are other clients using it), and deal
  11354.       with a closed session when starting a new I2PTunnel instance.
  11355.     * Refactoring and logging.
  11356.  
  11357. 2004-09-06  jrandom
  11358.     * Address a race condition in the key management code that would manifest
  11359.       itself as a corrupt router identity.
  11360.     * Properly clear old transport addresses from being displayed on the old
  11361.       console after soft restarts.
  11362.     * Properly refuse to load the client applications more than once in the
  11363.       same JVM.
  11364.     * Added support for a graceful restart (a graceful shutdown followed by a
  11365.       full JVM restart - useful for restarting client apps).
  11366.     * More defensive programming, HTML cleanup, logging
  11367.     * wrapper.config cleanup of duplicate lines
  11368.  
  11369. 2004-09-04  jrandom
  11370.     * Added some basic guards to prevent multiple instances from running.
  11371.       Specifically, a file "router.ping" in the install directory which is
  11372.       written to once a minute - if that file exists and has been modified
  11373.       within the last minute, refuse to start up.  In turn, adjust the
  11374.       service wrapper to wait a minute before restarting a crashed JVM.
  11375.     * Create a "work" directory in the I2P install dir which Jetty will
  11376.       use for all of its temporary files.
  11377.     * Tell the browser not to cache most of the router console's pages.
  11378.  
  11379. 2004-09-04  jrandom
  11380.     * Update the SDK to automatically reconnect indefinitely with an
  11381.       exponential delay on retries (capped at 5 minutes).
  11382.  
  11383. * 2004-09-03  0.4 released
  11384.  
  11385. 2004-09-03  jrandom
  11386.     * Updated default wrapper.config to deal with the hard restart option
  11387.     * Include the history.txt in the /help.jsp page
  11388.     * HTML updates (wrapper.log, and no more unix scripts)
  11389.     * Updated VERSION constants to 0.4
  11390.  
  11391. 2004-09-03  hypercubus
  11392.     * Bugfix: Installer launches postinstall.bat on WinNT/2K properly.
  11393.     * Temporarily removed install_i2p_service_unix and
  11394.       uninstall_i2p_service_unix from distribution packages.
  11395.     * postinstall.bat/postinstall.sh cleans installation directory of all files
  11396.       not applicable to the host OS.
  11397.  
  11398. 2004-09-03  oOo
  11399.     * Added some filters to the HTTP request, replacing the User-Agent,
  11400.       Referrer, Via, and From headers, which helps until we have a more
  11401.       comprehensive filtering system.
  11402.  
  11403. 2004-09-03  jrandom
  11404.     * Disabled the old listener on port 7655.
  11405.  
  11406. 2004-09-02  jrandom
  11407.     * Cleaned up the base build.xml, adding a new target ("updater") which
  11408.       builds the file i2pupdate.tar.bz2 which can be safely extracted over
  11409.       existing installs.
  11410.  
  11411. 2004-xx-xx  jrandom
  11412.     * Implemented the new web architecture and router console
  11413.     * Implemented I2PTunnel web interface, and revamped startup process.
  11414.     * Revamped peer selection code to address skew.
  11415.     * Removed all temporary threads from the router and the SDK.
  11416.     * Bugfix dealing with timeouts and resends.
  11417.     * Integrated Iakin's jcpuid library and jbigi update, with modifications.
  11418.  
  11419. 2004-xx-xx  hypercubus
  11420.     * Implemented the new installation process.
  11421.     * Integrated systray
  11422.     * Integrated service manager
  11423.  
  11424. 2004-xx-xx  oOo
  11425.     * Implemented ?i2paddresshelper= hook
  11426.     * Many small bugfixes to the web interface, router, i2ptunnel, and core.
  11427.  
  11428. 2004-xx-xx  Nightblade
  11429.     * libSAM updates.
  11430.  
  11431. 2004-xx-xx  cervantes
  11432.     * Imported i2pProxy.pac proxy script in with the build.
  11433.  
  11434. * 2004-08-20  0.3.4.3 released
  11435. * 2004-08-12  0.3.4.2 released
  11436. * 2004-08-08  0.3.4.1 released
  11437. * 2004-07-29  0.3.4 released
  11438. * 2004-07-23  0.3.3 released
  11439. * 2004-07-16  0.3.2.3 released
  11440. * 2004-07-14  0.3.2.2 released
  11441. * 2004-07-11  0.3.2.1 released
  11442. * 2004-07-07  0.3.2 released
  11443. * 2004-06-25  0.3.1.5 released
  11444. * 2004-05-23  0.3.1.4 released
  11445. * 2004-05-20  0.3.1.3 released
  11446. * 2004-05-13  0.3.1.2 released
  11447. * 2004-05-07  0.3.1.1 released
  11448. * 2004-04-30  0.3.1 released
  11449. * 2004-04-20  0.3.0.4 released
  11450. * 2004-04-04  0.3.0.3 released
  11451. * 2004-03-30  0.3.0.2 released
  11452. * 2004-03-25  0.3.0.1 released
  11453. * 2004-03-21  0.3.0 released
  11454. * 2004-03-10  0.2.5.4 released
  11455. * 2004-03-04  0.2.5.3 released
  11456. * 2004-02-28  0.2.5.2 released
  11457. * 2004-02-27  0.2.5.1 released
  11458. * 2004-02-25  0.2.5 released
  11459. * 2004-02-19  0.2.4.2 released
  11460. * 2004-02-15  0.2.4.1 released
  11461. * 2004-02-14  0.2.4 released
  11462. * 2004-01-27  0.2.3.6 released
  11463. * 2004-01-21  0.2.3.5 released
  11464. * 2004-01-14  0.2.3.4 released
  11465. * 2003-12-29  0.2.3.3 released
  11466. * 2003-12-27  0.2.3.2 released
  11467. * 2003-12-25  0.2.3.1 released
  11468. * 2003-12-13  0.2.3 released
  11469. * 2003-12-01  0.2.2 released
  11470. * 2003-11-18  0.2.1.1 released
  11471. * 2003-11-12  0.2.1 released
  11472. * 2003-11-09  0.2.0.3 released
  11473. * 2003-11-08  0.2.0.2 released
  11474. * 2003-11-03  0.2.0.1 released
  11475. * 2003-11-01  0.2 released
  11476.